我正在尝试让我的视图控制器检测我的应用程序自动显示的UINavigationBar中的滑动,但它拒绝检测滑动。我有什么方法可以做到吗?

有帮助吗?

解决方案

假设您要检测导航栏左侧的滑动,您可以在创建导航控制器时执行这样的操作

   UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(scrollViewSwipedLeft:)];
   [swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
   [self.navigationController.navigationBar addGestureRecognizer:swipeLeft];

然后创建一个类似下面的方法来处理它:

-(void) didSwipedLeft: (UISwipeGestureRecognizer *) gesture {

  if (gesture.state != UIGestureRecognizerStateEnded) {
      return;
  }

  //do something    
}

OBS:由于导航控制器是一个将在应用程序生命周期的几个步骤中保持活动状态的类,因此请务必注意并仅在创建导航控制器时添加手势识别器(这意味着仅添加这一次)这样你就不会把手势识别器一个堆叠在一起,这不仅会导致内存泄漏,而且还会使你的方法 didSwipedLeft 不止一次被调用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top