Ios 如何在UINavigationBar上禁用向右滑动手势?
当我在导航栏上从左向右滑动时,我的导航控制器会弹出一个视图控制器。我已经看过了,所以我知道我可以Ios 如何在UINavigationBar上禁用向右滑动手势?,ios,ios7,uinavigationcontroller,uinavigationbar,uigesturerecognizer,Ios,Ios7,Uinavigationcontroller,Uinavigationbar,Uigesturerecognizer,当我在导航栏上从左向右滑动时,我的导航控制器会弹出一个视图控制器。我已经看过了,所以我知道我可以 self.navigationController.interactiveEPGESTurerecognizer.enabled=否 。。。但它只是在导航栏下方的视图上禁用滑动,而不是导航栏本身 我目前的解决方案是手动找到手势并禁用它。这很有效,但不确定是否有更好的方法。导航栏似乎没有类似于InteractivePostureRecognizer的属性 // This is inside a `UI
self.navigationController.interactiveEPGESTurerecognizer.enabled=否代码>
。。。但它只是在导航栏下方的视图上禁用滑动,而不是导航栏本身
我目前的解决方案是手动找到手势并禁用它。这很有效,但不确定是否有更好的方法。导航栏似乎没有类似于InteractivePostureRecognizer
的属性
// This is inside a `UINavigationController` subclass.
for (UISwipeGestureRecognizer *gr in self.navigationBar.gestureRecognizers) {
if ([gr isKindOfClass:[UISwipeGestureRecognizer class]] && gr.direction == UISwipeGestureRecognizerDirectionRight) {
gr.enabled = NO;
}
}
UIGestureRecognitzerDelegate
有一个名为-(BOOL)GestureRecognitzer:(UIGestureRecognitzer*)的方法GestureRecognitzer应该接收touch:(UITouch*)touch
。
如果您能够指出触摸屏的视图是否为UINavigationBar
,只需使其返回“否”
诸如此类
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return (![[[touch view] class] isSubclassOfClass:[UIControl class]]); // UIControl is whatever as you like.
}
是的,没有这样的财产。你的方法似乎还可以。为了方便起见,您可以在类别中定义一个只读属性。您能让它工作吗?2天的努力,愉快而轻松地解决。非常感谢。我要添加的唯一事实是(在我的例子中)NavigationController.InteractiveEPPGestureRecognitor.delegate assignment和shouldReceiveTouch函数被添加到parentViewContoller,而不是activeViewContoller。