如果用户点击UIBarButtonItem,如何忽略点击?

时间:2013-10-07 18:58:32

标签: ios objective-c uiview ios7 uibarbuttonitem

出于某种原因,当识别器添加到self.view并且我不想要它时,我的UITapGestureRecognizer阻止我按下工具栏按钮。在shouldReceiveTouch中,如果项目是工具栏按钮,我想返回NO。

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

我可以说这是UIToolBar的子视图吗?我该怎么办?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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;
}