0

埋め込み WebView 内のすべてのリンクを Safari (または既定のブラウザー) で開く方法を説明している投稿をいくつか見つけましたが、選択したリンクのみを Safari で開く方法については何も見つかりません。デフォルトでは、WebView に読み込まれます。何か案は?

4

1 に答える 1

5

クリックしたリンクを実際に既定のブラウザーに読み込むことができます。

そのためには、WebPolicyDecisionListenerプロトコルを実装し、次のように設定policyDelegateする必要がありWebViewます。

[webView setPolicyDelegate:self];

そして、次のメソッドを実装します。

-(void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id<WebPolicyDecisionListener>)listener
    {

        if (WebNavigationTypeLinkClicked == [[actionInformation objectForKey:WebActionNavigationTypeKey] intValue])
        {
            [listener ignore];
            NSLog(@"Opening URL in browser:%@",[request URL]);
            [[NSWorkspace sharedWorkspace] openURL:[request URL]];

        }    
        [listener use];
    }

-(void)webView:(WebView *)webView decidePolicyForNewWindowAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request newFrameName:(NSString *)frameName decisionListener:(id <WebPolicyDecisionListener>)listener
    {
        if (WebNavigationTypeLinkClicked == [[actionInformation objectForKey:WebActionNavigationTypeKey] intValue])
        {
            [listener ignore];
            NSLog(@"Opening URL new window:%@",[request URL]);
            [[NSWorkspace sharedWorkspace] openURL:[request URL]];
        }
        [listener ignore];
    }

クリックしたこのリンクは、[リクエスト URL] でこのデリゲート メソッドに受信されます。

于 2013-03-04T11:25:42.323 に答える