ios8 web视图在safari中打开外部链接,除了一个

时间:2014-10-02 16:00:49

标签: ios uiwebview safari

我有一个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付款。 paypal页面在Web视图中打开,但是当用户点击按钮以使用他的paypal帐户登录时,在Safari中打开链接并且他收到来自paypal的关于会话过期的警告(当然)。 在添加上面的代码之前,在Web视图中正确显示了paypal页面,用户可以完成付款,然后将其重定向到我的页面以将事务存储在我的数据库中。

那么,除了paypal页面之外,我如何打开Safari中的所有外部链接? 谢谢!

1 个答案:

答案 0 :(得分:0)

您应该能够从NSURLRequest获取网址字符串,然后根据该字符串进行过滤:

-(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的网址结构,所以我只是天真地假设包含“paypal.com”的网址是您要在网络视图中打开的PayPal链接。必要时调整。

相关问题