UIButton
どうやら iOS 6 は、ジェスチャ レコグナイザとが同じ場所にあり、同じジェスチャに対してアクティブ化されている場合に、状況を自動的に処理しようとするようです。
この新しい自動処理は、ジェスチャ認識エンジンをアクティブにする代わりにボタンをクリックする場合の問題を解決しますが、ジェスチャ認識エンジンを動作させたい場合は新しい問題を引き起こします。
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;
}