我正在使用iOS SDK 6和7.我有一个UIToolbar覆盖另一个视图 - 称之为“View B” - 它有touches*
个消息处理程序来处理点击。当然,工具栏中充满了UIBarButtonItems。当启用工具栏按钮项时,当我点击它或拖动它时,视图B会收到 no 触摸消息,这是所需的效果。但是当一个按钮项被禁用时,点击或拖动它会向工具栏(通过)向下发送一条消息到下面的视图B.
如果通过禁用的条形按钮项目进行点击,我如何确保工具栏上的点击不传递给基础视图?
答案 0 :(得分:1)
我仍然认为这是一种相当不直观的行为,但解决方法相当容易。例如,touchesBegan事件传递一个touches
NSSet,通常用于考虑触摸要处理的内容。这里的问题是底层视图将接收包含不属于它并且不应该处理的触摸的触摸集。因此,而不是:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
for (UITouch* touch in touches)
{
...
}
}
... ...使用
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSSet* myTouches = [event touchesForView: self];
for (UITouch* touch in myTouches)
{
...
}
}
...因此忽略SDK提供的触摸并仅使用与“View B”本身相关的触摸。
答案 1 :(得分:0)
如果您已经在视图B中手动处理触摸事件,只需检查触摸事件的点击点是否在禁用按钮的框架内。如果是这样,请忽略它。