ページ

2009年9月22日火曜日

WPSU(16) - WebKitで新規ウィンドウを開く(Documentベースアプリへ移行)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

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を使うブログパーツが原因で何か問題が起きているようだ。