【发布时间】:2016-06-04 17:30:18
【问题描述】:
我有一个使用 SFSafariViewController 打开的带有内联 URL 链接的 Webview,如下所示:
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
if ( inType == UIWebViewNavigationTypeLinkClicked ) {
if ([SFSafariViewController class] != nil) {
NSString *inR = [[inRequest URL] absoluteString];
NSURL *inReq = [NSURL URLWithString:inR];
SFSafariViewController *safariVC = [[SFSafariViewController alloc] initWithURL:inReq entersReaderIfAvailable:YES];
safariVC.delegate = self;
[self presentViewController:safariVC animated:YES completion:nil];
} else {
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}
}
return YES;
}
#pragma mark - SFSafariViewController delegate methods
-(void)safariViewController:(SFSafariViewController *)controller didCompleteInitialLoad:(BOOL)didLoadSuccessfully {
// Load finished
}
-(void)safariViewControllerDidFinish:(SFSafariViewController *)controller {
// Done button pressed
NSLog(@"DONE PRESSED!!!");
}
当我按 DONE 按钮正确返回到我的 Webview。问题是,如果我再次按下同一个内联链接,它不会用 SFSafariViewController 打开,而是在 Webview 中打开,这不是我想要的。我试图在 safariViewControllerDidFinish 中强制重新加载 Webview,但没有成功。
你能帮忙吗?谢谢!
【问题讨论】:
-
您不想在
if ([SFSafariViewController class] != nil)块的末尾返回NO吗? -
成功了!非常感谢您的及时协助。
标签: ios objective-c webview sfsafariviewcontroller