iOS:防止通过禁用的工具栏按钮点击
Posted
技术标签:
【中文标题】iOS:防止通过禁用的工具栏按钮点击【英文标题】:iOS: Prevent tapping through a disabled toolbar button 【发布时间】:2013-09-23 17:48:33 【问题描述】:我正在使用 ios SDK 6 和 7。我有一个 UIToolbar 覆盖另一个视图(称为“视图 B”),它具有用于处理点击的 touches*
消息处理程序。当然,工具栏充满了 UIBarButtonItems。当启用工具栏按钮项目时,当我点击它或拖动它时,视图 B 会收到 no 触摸消息,这就是所需的效果。但是当一个按钮项被禁用时,点击或拖动它会向下“通过”工具栏(实际上)向下方的视图 B 发送一条消息。
我如何确保在工具栏上的点击不会传递到底层视图,即使点击发生在禁用的栏按钮项目上?
【问题讨论】:
【参考方案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 提供的触摸并仅使用与“视图 B”本身相关的触摸。
【讨论】:
【参考方案2】:如果您已经在视图 B 中手动处理触摸事件,只需检查触摸事件的点击点是否在禁用按钮的框架内。如果是这样,请忽略它。
【讨论】:
以上是关于iOS:防止通过禁用的工具栏按钮点击的主要内容,如果未能解决你的问题,请参考以下文章
在执行自定义 segue 之前禁用工具栏 UIBarButtonItem