OSX 用の HTML5 アプリをラップする Web ビューを備えた単純なアプリケーションを構築しています。Web ビューはアプリからのメッセージをリッスンし、いくつかの JavaScript 関数を呼び出してデータを送り返します。別のページを Web ビューにロードしようとするまで、これは完全に機能します。バックグラウンドで Web ビューが ResourceLoadDelegate を解放し、再度呼び出そうとすると、エラー メッセージが表示されます。
私のプロジェクトでは、1 つのクラスを巨大なアプリ デリゲートとして使用しており、UIDelegate、ResourceLoadDelegate、および FrameLoadDelegate をすべて「self」に設定しています。ResourceLoadDelegate が設定されていない場合、エラーは発生しませんが、メッセージを受信できません。
私の問題が何であるか知っている人はいますか?これが私のコードです:
私のヘッダー:
@interface BFAppDelegate : NSObject <NSApplicationDelegate> {
WebView *webView;
}
@property (nonatomic, strong) IBOutlet WebView *webView;
@end
私のクラス:
@implementation BFAppDelegate
@synthesize webView;
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
[self.webView setUIDelegate:self];
[self.webView setResourceLoadDelegate:self];
[self.webView setFrameLoadDelegate:self];
}
-(void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame {
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:message]];
[self.webView loadRequest:request];
}
@end