我将UIPanGestureRecognizer添加到视图控制器中的一个自定义视图中。
我也在使用MFSideMenu进行滑动菜单,在其框架中将UIPanGestureRecognizer添加到主NavigationViewController.view。
有时当我在自定义视图中平移时,平移实际上发生在MavigationViewController.view中。
导致此问题的原因是MFSideMenu实现中的以下代码:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
if([gestureRecognizer.view isEqual:self.rootViewController.view] &&
[self rootViewControllerPanEnabled])
{
return YES;
}
return NO;
}
}
有时候(5-10中有1个),此方法返回YES,在视图本身平移时应返回NO!
问题在于,不是平移自定义视图,而是打开滑动菜单。
我已经尝试了所有我能想象到的东西 - 这种行为根本没有任何意义。
更新:仅在iOS 7中出现问题 - 请参阅下面的修复答案。
答案 0 :(得分:1)
找到解决方案;显然问题出在iOS 7中。
要修复它,只需在视图控制器中实现UIGestureRecognizerDelegate
并实现:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
这解决了我的随机问题!
的信用