0

出于某种原因,我的 UITapGestureRecognizer 在添加识别器时阻止我的工具栏按钮被按下,self.view而我不希望它这样做。如果shouldReceiveTouch项目是工具栏按钮,我想返回 NO。

但是,我该怎么做呢?这些项目显然不是 UIBarButtonItems,因为当我放置一个 if 语句来检查是否touch.view属于该类时,它会忽略它。如果我在那里放一个断点并检查touch.view它的类是UIToolbarTextButton. 但[UIToolbarTextButton class]我收到“使用未声明的标识符 UIToolbarTextButton”错误。

我可以说它是否是的子视图UIToolBar?我应该怎么办?

4

2 回答 2

0

没有任何代码,这是一个很难回答的问题...但是听起来您正在将 Tapgesture 识别器添加到与工具栏相同的视图中...您可以检查坐标以查看它们是否在 uitoolbar 的 CGrect 内...但我真正建议的是创建一个包含 2 个子视图的视图:一个是您的工具栏,另一个是您的视图的主要部分...然后仅将 tapGesture 添加到 mainView。祝你好运

于 2013-10-07T19:04:47.060 回答
0

更好的解决方案是不要将 UITapGestureRecognizer 添加到 self.view。

使用 Interface Builder 添加一个新视图,该视图涵盖除工具栏区域之外的所有区域。

将所有控件放入其中并添加点击手势。

备选方案:将此添加到您的 ViewDidLoad 函数或您认为更合适的位置。

for (UIView *v in [toolbar items]) 
{
    v.tag = 5; // tag tool bar items
}

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

    if (touch.view.tag == 5)
        return NO;
    return YES;
}
于 2013-10-07T19:05:38.767 回答