Очевидно, что iOS 6 пытается автоматически обрабатывать ситуацию, когда у вас есть распознаватель жестов и UIButton
в том же месте, который активируется для того же жеста.
Эта новая автоматическая обработка решает проблему, если вы хотите нажать кнопку вместо активации распознавателя жестов, но создает новую проблему, когда вы хотите, чтобы распознаватель жестов действовал.
В iOS 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;
}