出于某种原因,当识别器添加到self.view
并且我不想要它时,我的UITapGestureRecognizer阻止我按下工具栏按钮。在shouldReceiveTouch
中,如果项目是工具栏按钮,我想返回NO。
但是我该怎么做?这些项显然不是UIBarButtonItems,因为当我输入if语句来检查touch.view
是否属于该类时,它会忽略它。如果我在那里放置一个断点并检查touch.view
它的类是UIToolbarTextButton
。但是[UIToolbarTextButton class]
我得到了“使用未声明的标识符UIToolbarTextButton”错误。
我可以说这是UIToolBar
的子视图吗?我该怎么办?
答案 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;
}