在UINavigationBar中检测滑动

Mat*_*att 2 iphone objective-c uinavigationbar uikit ios

我试图让我的视图控制器检测我的应用程序自动显示的UINavigationBar中的滑动,但它拒绝检测滑动.有什么办法可以吗?

Fel*_*ino 9

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

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

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

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

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

  //do something    
}
Run Code Online (Sandbox Code Playgroud)

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