1

我有一个 iPad 应用程序,其中有一个视图控制器,它是许多 UIGestureRecognizers 的 UIGestureRecognizerDelegate。我已经实现了 UIGestureRecognizerDelegate 的以下方法:

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


 // Double tapping anywhere on the screen hides/shows the toolbar
 if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] == YES) {

      if (touch.tapCount == 2) {

           self.toolbar.hidden = self.toolbar.isHidden ? NO : YES;

      } // if (touch.tapCount == 2)

 } // if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] == YES)


 // All gestures are ignored unless they happen on the fullscreen EAGLView
 if ([touch.view isKindOfClass:[EAGLView class]] == NO) {

      return NO;

 } // if ([touch.view isKindOfClass:[EAGLView class]] == NO)


 return YES;

}

我的设置是一个全屏 EAGLView,在 EAGLView 顶部有一个 UIToolbar。工具栏上有一个 UIBarButtonItem。这里的想法是双击任何地方都会切换工具栏的外观。所有其他手势必须发生在 EAGLView 上。

我的问题是直接点击 UIBarButtonItem 显示 touch.view 是 UIView 子类 UIToolbarTextButton ,它没有记录并且不能自省。

嗯?

有人可以建议一种解决方法,最好是使用某种形式的内省善良?

谢谢,
道格

谢谢,

道格

4

1 回答 1

3

您可以.superview重复计算直到到达 UIToolbar、EAGLView 或nil.

于 2010-05-01T06:41:46.540 回答