我在SFSafariViewController中提供了一个链接,如下所示:
SFSafariViewController *sfvc = [[SFSafariViewController alloc] initWithURL:myurl];
sfvc.preferredControlTintColor=[UIColor blackColor];
sfvc.delegate = self;
[self.navigationController pushViewController:sfvc animated:YES];
我添加了委托SFSafariViewControllerDelegate
和方法:
- (void)safariViewControllerDidFinish:(SFSafariViewController *)controller{
NSLog(@"safariViewControllerDidFinish");
[self.navigationController popViewControllerAnimated:YES];
}
然而,当我点击"完成"按钮,它通常不起作用。特别是左手,它不起作用。然而,当我用右手用特定角度拍打时,它确实有效。这似乎表明" Done"的触摸区域按钮太小了。
如果我从左边缘使用滑动,则可行。
答案 0 :(得分:3)
我明白了。我使用了XCode" Debug View Hierarchy"并且注意到整个SFSafariViewController
的左侧被UINavigationController的左边缘轻扫检测视图和第二左边缘轻扫检测视图覆盖。也许SFSafariViewController带有它自己的左边缘滑动检测视图。第二种观点与'#34;完成"重叠按钮触摸区。
然后我在某地读到SFSafariViewController只能使用presentViewController
来呈现。
所以我删除了委托方法并改为使用它:
SFSafariViewController *sfvc = [[SFSafariViewController alloc] initWithURL:myurl];
sfvc.preferredControlTintColor=[UIColor blackColor];
[self presentViewController:sfvc animated:YES completion:nil];
这完美无缺。 令人惊讶的是,以这种方式呈现,从左边缘滑动似乎仍然工作正常。通过XCode" Debug View Hierarchy",我只注意到一个左边缘滑动检测视图: