2

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
4

1 に答える 1