我正在向视图控制器中的一个自定义视图中添加一个UIPanGestureRecognizer。
我还使用MFSideMenu进行滑动菜单,在其框架中向主NavigationViewController.view添加了一个UIPanGestureRecognizer。
有时,当我在我的自定义视图中进行摇摄时,pan实际上发生在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中有一个),这个方法会返回YES,当它在视图上摇摄时应该返回NO!
问题是,不是平移自定义视图,而是打开滑动菜单。
我已经尝试了我所能想象到的一切--这种行为根本没有任何意义。
更新:问题仅在iOS 7-请参阅下面的我的答案为修复。
发布于 2013-11-25 12:56:51
找到了解决方案;显然问题在iOS 7中。
要修复它,只需在视图控制器中实现UIGestureRecognizerDelegate并实现:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}这解决了我的随机问题!
https://stackoverflow.com/questions/20192510
复制相似问题