По какой-то причине мой UITapGestureRecognizer
не вызывает метод, когда я нажимаю UIButton. Что действительно странно, так это то, что я использовал точки останова в Xcode, чтобы убедиться, что метод gestureRecognizer:shouldReceiveTouch:
возвращает ДА. Жест должен называть его методом, но это не так. У меня cancelsTouchesInView
установлен на YES, но он ничего не делает.UITapGestureRecognizer не вызывает метод целевого действия
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass: [UIButton class]] && !editingTaskName)
return NO;
else if ([touch.view isKindOfClass: [UITextField class]])
return NO;
return YES; // handle the touch
}
Вот код, где я установил все свои распознаватели жестов. Возможно, другие вмешиваются в мой жест нажатия.
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget: self action: @selector(longPress:)];
[longPress setMinimumPressDuration: 0.3];
[longPress setDelaysTouchesBegan: YES];
[self setLongPressGesture: longPress];
[[self tableView] addGestureRecognizer: longPress];
UITapGestureRecognizer *backToTableView = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(backTapRecognized:)];
[backToTableView setCancelsTouchesInView: YES];
[backToTableView setDelegate: self];
[backToTableView setEnabled: NO];
[self setBackTapGesture: backToTableView];
[[self tableView] addGestureRecognizer: backToTableView];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(hideShowEditing:)];
[tap setCancelsTouchesInView: YES];
[tap setDelegate: self];
[self setEditTap: tap];
[[self tableView] addGestureRecognizer: tap];
Так что, если я хотел, чтобы остановить UIButton от того приоритета, я бы подкласс UIButton и переопределить '' gestureRecognizerShouldBegin: метод. – bbraunj
Было бы проще подключить распознаватель жестов к самой кнопке. Тогда этот распознаватель жестов будет побеждать. Однако этот вид убивает собственный кран кнопки; почему бы не просто использовать встроенное сообщение о действии кнопки и позволить кнопке работать так, как она хочет? – matt