UIBarButton не работает, когда в супервизоре панели инструментов есть UITapGestureRecognizers?

Я испытываю это странное поведение.

Я создаю чистый проект (шаблон просмотра), добавляю панель инструментов с кнопкой и подключаю ее к действию. это работает;) НО, тогда, когда я добавляю UITapGestureRecognizer в представление моего контроллера представления, кнопка панели инструментов перестает работать. (Он нажат, но его действие не вызывается) Когда я добавляю UITapGestureRecognizer, вызывается только связанное с ним действие. Это похоже на то, что представление распознавателя uitapgesture скрывало панель инструментов, но на самом деле это не так.

Что здесь происходит? Что мне не хватает?

- (IBAction)itemAction{
    NSLog(@"%s", _cmd);
    self.view.backgroundColor = [UIColor whiteColor];
}
- (void) tapAction{
    NSLog(@"%s", _cmd);
    self.view.backgroundColor = [UIColor greenColor];
}
- (void)viewWasTapped:(UITapGestureRecognizer *)recognizer{
    if (recognizer.state == UIGestureRecognizerStateRecognized) {
        [self tapAction];
    }
}
- (void)viewDidLoad {
    [super viewDidLoad];
    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewWasTapped:)];
    [tapGestureRecognizer setNumberOfTapsRequired:1];
    [self.view addGestureRecognizer:tapGestureRecognizer];
    [tapGestureRecognizer release]; 
}

EDIT: исходный код проекта можно загрузить здесь

Заранее благодарю за любой совет

Игнасио


person nacho4d    schedule 15.02.2011    source источник
comment
Где путаница? Ваш распознаватель жестов касания обрабатывает касание раньше, чем кнопка.   -  person Lily Ballard    schedule 15.02.2011
comment
Да, я знаю это, но вид распознавателя жестов находится ниже панели инструментов, поэтому этого не должно происходить. Должен ли?   -  person nacho4d    schedule 15.02.2011


Ответы (2)


Я столкнулся с похожей проблемой и нашел этот ответ весьма полезным, особенно потому, что он позволяет выборочно исключая распознаватель жестов на основе типа касания.

person Amos Joshua    schedule 08.03.2012

В итоге нашел причину:

tapGestureRecognizer.cancelsTouchesInView = NO;
person nacho4d    schedule 08.03.2012