2

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

4

1 回答 1

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

于 2011-04-26T22:21:12.220 回答