WPSU はシングルウィンドウのアプリとして作成しているため、新規ウィンドウを開くようなリンクを押しても反応しない。
Safari など普通のブラウザと同様にリンクが開くようにする。このあたりは自分で実装するよりは標準のフレームワークを使った方が楽にできる。今までのプロジェクトを一旦捨てて新しいプロジェクトへソースコードを載せ替える。
最初のテンプレートで document-based application を選択する。
後は旧プロジェクトから必要なソースコードをコピーしてプロジェクトへ加える。従来 WebController で行っていた処理は MyDocument へ載せ変えた。
その上で、リンクが押されたときの処理を追加する。
まず Interface Builder を使い、WebViewの UIDelegate を File's Owner(すなわち MyDocument)へ設定する。
次に -[WebUIDelegate webView:createWebViewWithRequest:] を MyDocumentに実装する。
MyDocument.m
- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request
{
MyDocument* document = [[NSDocumentController sharedDocumentController] openUntitledDocumentOfType:@"DocumentType" display:YES];
[[[document webView] mainFrame] loadRequest:request];
return [document webView];
}
新規にドキュメントを作成し、その上に配置された WebView でリクエストを処理させる。
実行してみよう。
出た。
- - - -
JavaScriptを ON にするとエラーが出て強制終了してしまった。
どうも JSを使うブログパーツが原因で何か問題が起きているようだ。