4

私はココア開発の初心者です。

WebPolicyDelegate の使用について読みました。しかし、私はそれを本来の方法で機能させることができないようです。アプリで外部リンクを開き、chrome や safari などの Web ブラウザーで起動できるようにします。これは、リンクがクリックされたときにのみ発生します。

現在、私のアプリのデフォルトの URL は、私のアプリの webview が行っていることと同時に、web ブラウザーにも開きます。

policyDelegate を webview に設定し、その実装に次のコードを使用しました。

- (void)webView:(WebView *)webView 
decidePolicyForNavigationAction:(NSDictionary *)actionInformation 
request:(NSURLRequest *)request 
frame:(WebFrame *)frame 
decisionListener:(id <WebPolicyDecisionListener>)listener
{
    if ([actionInformation objectForKey:WebActionElementKey]) {
        [listener ignore];
        [[NSWorkspace sharedWorkspace] openURL:[request URL]];
    }
    else {
        [listener use];
    }
}

どんな助けでも大歓迎です!:)

4

3 に答える 3

5

URL のスキームをチェックして、デフォルトのブラウザで開く必要があるかどうかを確認できます。

// open local urls in our app, and external in default browser
NSString *scheme = [[request URL] scheme];
if ([scheme isEqualToString:@"file"])
{
    [listener use];
}
else
{
    [listener ignore];
    [[NSWorkspace sharedWorkspace] openURL:[request URL]];
}

このコードは私にとってはうまくいきます。拡張可能です。カスタム スキームをチェックして、いくつかのカスタム アクションを実行できます。

于 2013-05-30T13:21:42.037 に答える