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

ios8 web视图在safari中打开除一个外的外部链接,ios,uiwebview,safari,Ios,Uiwebview,Safari,我有一个UIWebview,可以从服务器加载一些页面。 我想在Safari中打开外部链接,并使用以下代码: -(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType { if ( inType == UIWebViewNavigationTypeLinkClicked ) {

我有一个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页面之外的所有外部链接?
谢谢大家!

您应该能够从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