Обнаружение пролистывания в UINavigationBar - PullRequest
2 голосов
/ 26 ноября 2009

Я пытаюсь заставить мой контроллер просмотра обнаруживать пролистывания в панели UINavigationBar, которая автоматически отображается моим приложением, но отказывается обнаруживать пролистывания. Есть ли способ, которым я могу это сделать?

1 Ответ

9 голосов
/ 27 апреля 2011

Предположим, что вы хотите обнаружить пролистывания влево на панели навигации, вы можете сделать что-то вроде при создании контроллера навигации :

   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 более одного раза.

...