我有一个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中的所有外部链接? 谢谢!
答案 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链接。必要时调整。