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