UINavigationController interactivePopGestureRecognizer在iOS7中工作异常

Wei*_*Wei 15 iphone objective-c uinavigationbar ios ios7

在iOS7中,我们有一个新的"向左滑动"手势,这是一个非常有用的功能,但现在我有一个问题.

我使用此代码自定义后退按钮UINavigationBar.

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:view];

但这将禁用"从左向右滑动"手势,因此我使用以下代码来保持手势的启用.

self.navigationController.interactivePopGestureRecognizer.delegate = self

然后,我发现手势工作异常,如果当前的ViewController有一个tableView,当tableView滚动时,手势将不会被触发.现在手势无法轻易触发,是否有某种方法可以修复它?

Wei*_*Wei 29

这段代码对我来说很好.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return [gestureRecognizer isKindOfClass:UIScreenEdgePanGestureRecognizer.class];
}
Run Code Online (Sandbox Code Playgroud)


Ort*_*ntz 5

设置interactivePopGestureRecognizer.delegateself仅仅是第一步。第二步是实施

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return !(otherGestureRecognizer is UIPanGestureRecognizer)
}
Run Code Online (Sandbox Code Playgroud)

需要针对平移手势识别器进行测试,以在交互式弹出过程中阻止滚动或表格视图的垂直滚动。


Bru*_*uno 5

添加类控制器“UIGestureRecognizerDelegate”

在 viewDidAppear 添加

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    
    self.navigationController?.interactivePopGestureRecognizer.delegate =  self
}
Run Code Online (Sandbox Code Playgroud)

=)