2009-11-26 3 views
2

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

+0

Как вы пытаетесь обнаружить удары? –

+0

Использование методов touchFinished, когда UINavigationBar автоматически нарисован в UINavigationController. – Matt

ответ

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: Как вы навигационный контроллер класс, который будет оставаться в живых в течение нескольких шагов вас жизненного цикла приложения, важно обратить внимание на то, и добавить этот жест признать r только тогда, когда вы создаете контроллер навигации (что означает только добавление его один раз), так что вы не держите друг друга за распознавание жестов, что приведет не только к утечке памяти, но также может сделать ваш метод didSwipedLeft более называть чем один раз.

Смежные вопросы