在UINavigationBar中检测滑动

时间:2009-11-26 07:47:00

标签: iphone objective-c ios uikit uinavigationbar

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

1 个答案:

答案 0 :(得分:9)

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

   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被多次调用。