Очевидно, что iOS 6 пытается автоматически справиться с ситуацией, когда у вас есть распознаватель жестов и UIButton
в том же месте, который активируется для того же жеста.Обработка распознавателей жестов в iOS6
Эта новая автоматическая обработка решает проблему, если вы хотите щелкнуть кнопку, вместо активации распознавателя жестов, но создает новую проблему, когда вы хотите, чтобы распознаватель жестов действовал.
В прошивкой 5 вы могли бы реализовать:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
перенести действие на UIButton
, когда в конфликте.
Это не работает в iOS 6. Также, инвертируя поведение этого метода (поскольку теперь UIButton
имеет приоритет вместо распознавателя жестов) не будет работать.
Полный метод:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UIControl class]]){
return NO;
}
return YES;
}
у вас есть uigesturerec ognizer на uiview, который имеет subview uibutton и хочет, чтобы распознаватель жестов получал касания вместо кнопки? – Ahti
да. На самом деле это 'UITableView' с' UIButtons' внутри ячеек, и я хочу, чтобы распознаватель жестов был активирован вместо кнопок. – jturolla
Разве iOS не сделал это до самого начала? У меня всегда были проблемы с нажатием кнопки. –