SFSafariViewController完成按钮不工作/触摸区域太小

时间:2017-05-26 18:25:48

标签: ios uinavigationcontroller sfsafariviewcontroller

我在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"的触摸区域按钮太小了。

如果我从左边缘使用滑动,则可行。

1 个答案:

答案 0 :(得分:3)

我明白了。我使用了XCode" Debug View Hierarchy"并且注意到整个SFSafariViewController的左侧被UINavigationController的左边缘轻扫检测视图和第二左边缘轻扫检测视图覆盖。也许SFSafariViewController带有它自己的左边缘滑动检测视图。第二种观点与'#34;完成"重叠按钮触摸区。

enter image description here

然后我在某地读到SFSafariViewController只能使用presentViewController来呈现。

所以我删除了委托方法并改为使用它:

SFSafariViewController *sfvc = [[SFSafariViewController alloc] initWithURL:myurl];
sfvc.preferredControlTintColor=[UIColor blackColor];
[self presentViewController:sfvc animated:YES completion:nil];

这完美无缺。 令人惊讶的是,以这种方式呈现,从左边缘滑动似乎仍然工作正常。通过XCode" Debug View Hierarchy",我只注意到一个左边缘滑动检测视图:

enter image description here