[英]UIPanGestureRecognizer conflicts with UIPinchGestureRecognizer's superview
[英]UIPanGestureRecognizer conflicts
我正在将UIPanGestureRecognizer添加到我的视图控制器中的一个自定义视图。
我还将MFSideMenu用于滑动菜单,该菜单在其框架中向主NavigationViewController.view添加了UIPanGestureRecognizer。
有时,当我在自定义视图中平移时,平移实际上发生在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中存在问题-请在下面的答案中查看该修复程序。
找到了解决方案; 显然问题出在iOS 7中。
要修复它,只需在视图控制器中实现UIGestureRecognizerDelegate
并实现:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
这解决了我的随机问题!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.