ios 8 webview在Safari中打开外部链接,除了一个
Posted
技术标签:
【中文标题】ios 8 webview在Safari中打开外部链接,除了一个【英文标题】:ios8 web view open external links in safari except one 【发布时间】:2014-10-02 16:00:49 【问题描述】:我有一个 UIWebview 从我的服务器加载一些页面。 我想在 Safari 中打开外部链接并使用以下代码:
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType
if ( inType == UIWebViewNavigationTypeLinkClicked )
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
return YES;
完美运行。
现在,从我的网页视图中显示的网页中,我想让用户使用贝宝付款。 paypal 页面在 web 视图中打开,但是当用户点击按钮以使用他的 paypal 帐户登录时,链接会在 Safari 中打开,并且他会收到来自 paypal 的有关会话已过期的警告(当然)。 在添加上述代码之前,paypal 页面在 web 视图中正确显示,用户可以完成支付,然后他被重定向到我的页面以将交易存储在我的数据库中。
那么,我如何在 Safari 中打开除了 paypal 页面之外的所有外部链接? 谢谢!
【问题讨论】:
【参考方案1】:您应该能够从NSURLRequest
中获取 URL 字符串,然后根据该字符串进行过滤:
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType
NSString *pageToVisit = inRequest.URL.absoluteString;
if ( inType == UIWebViewNavigationTypeLinkClicked && [pageToVisit rangeOfString:@"paypal.com"].location == NSNotFound )
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
return YES;
我不熟悉 PayPal 的 URL 结构,所以我只是天真地假设包含“paypal.com”的 URL 是您想要在 Web 视图中打开的 PayPal 链接。根据需要进行调整。
【讨论】:
完美!非常感谢你!仅针对需要此功能的其他所有人,您在字符串之前错过了“@”: rangeOfString:@"paypal.com"以上是关于ios 8 webview在Safari中打开外部链接,除了一个的主要内容,如果未能解决你的问题,请参考以下文章
XCODE swift - webview 无法打开 ics 链接 - 在 safari 中有效