7

我有一个ViewController嵌入在NavigationController. 在测试ViewController中我有一个WebView按钮。当我单击它时,button它会导航到SafariViewController并加载给定的 URL。当WebView我点击“完成”按钮时,它正在调用委托方法safariViewControllerDidFinish。但这SafariViewController并没有被驳回。

这是我的代码。

- (IBAction)bannerWebviewAction:(id)sender {
    NSURL *urls = [NSURL URLWithString:@"http://www.google.com"];
    SFSafariViewController safariVC = [[SFSafariViewController alloc] initWithURL:urls];
    [self showViewController:safariVC sender:nil];
    safariVC.delegate = self;
}

#pragma SFSafariViewControllerDelegate
-(void)safariViewControllerDidFinish:(SFSafariViewController *)controller {
    // Done button pressed
    [controller dismissViewControllerAnimated:YES completion:nil];  
}

完成button是调用,视图不是解雇。我检查了日志中的selfand controller,两者都是正确的。

4

1 回答 1

16

你不应该说

[self showViewController:safariVC sender:nil];

你应该说

[self presentViewController:safariVC animated:YES completion:nil];

SFSafariViewControllers 旨在以模态方式呈现,并在按下完成时自行关闭。

于 2015-12-18T14:17:36.940 回答