Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在UINavigationBar上禁用向右滑动手势?_Ios_Ios7_Uinavigationcontroller_Uinavigationbar_Uigesturerecognizer - Fatal编程技术网

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。