正如标题所说。我有一个控制器,我设置interactivePopGestureRecognizer.delegate
来处理逻辑何时允许后滑动手势,何时不允许。有效。但是现在我注意到,一旦我设置了委托,后面的滑动就会停止工作。它确实导致了一行代码。但为什么呢?
是的,我用来处理反向扫描逻辑的控制器有所需的一切(UIGestureRecognizerDelegate protocol
,gestureRecognizerShouldBegin delegate
方法,返回YES),但正如我所说,我在另一个控制器中发现只是通过调用以下代码的一行,后面的滑动不再起作用。 (是的,另一个控制器符合UIGestureRecognizerDelegate协议)
self.navigationController.interactivePopGestureRecognizer.delegate = self;
如果我同时添加它也没有帮助:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
return YES;
}
或
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
我想知道造成这种情况的原因是什么?如果我不打电话给那一行代码,那么回扫一下就行了!它甚至可以在另一个控制器中工作,我在那里处理逻辑。
编辑:我是从viewDidLoad设置委托。我也尝试过viewDidAppear,但没有。
答案 0 :(得分:1)
问题是因为您将多个ViewController
设置为委托。将ViewController
设置为UIGestureRecognizerDelegate
委托后,ViewController负责处理手势,之前设置的任何委托都将无效
要解决此问题,您可以在viewWillAppear
self.navigationController.interactivePopGestureRecognizer.delegate = self;
答案 1 :(得分:1)
出于某种原因,如果我将以下代码添加到控制器,则再次向后滑动有效。也许是因为我在控制器视图中有滚动视图,但它甚至在没有以下代码之前工作,然后停止了。奇怪。 (可能是我没有在控制器上工作的tableview,我不记得了,但是当它停止工作时我甚至用隐藏的表来尝试它)
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
如上所述here。