0

UIButtonタッチされたビューが特定のクラス(つまり、およびUIBarButtonItem)のものである場合、これを使用して、gestureRecognizerを無視しようとしています。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

  NSLog(@"%@", touch.view);

  if ([touch.view isKindOfClass:[UIButton class]]){
    return NO;
  } else if ([touch.view isKindOfClass:[UIBarButtonItem class]]){
    return NO;
  }
  return YES; // handle the touch
}

それはのためにうまくいきUIButtonます。では機能しませんUIBarButtonItemUIBarButtonItemに触れたときのNSLogの結果は次のとおりです。

<UIToolbarTextButton: 0x7b8f500; frame = (4 0; 60 40); opaque = NO; layer = <CALayer: 0x7b8f900>> 2012-06-26 12:09:48.021 

に変更してみました[UIBarButtonItem class][UIToolBarTextButton class]、これは文書化されていないクラスなのでできません。これを行う他の方法はありますか?

ありがとう。

4

1 に答える 1

0

UIBarButtonItem が UINavigationBar にある場合、UINavigationBar をサブクラス化し、別の実装を実装する必要があります。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

UIBarButtonItem のジェスチャをキャッチするため。これを達成する他の方法があるかもしれません。

于 2012-06-26T21:33:38.400 に答える