一些应用经常会在一个view上放多个按钮,比如登录页面,就会有注册与登录按钮。理论上讲注册和登录按钮是不能同时按下的,但是如果你同时按下这两个按钮,这两个东东都会显示响应高亮状态,其结果就不可预知了。这种情况经常会被测试童鞋当成bug
。
其实UIView类属性有个exclusiveTouch属性,表示是否该view响应触摸是排他的。默认的设置是NO,即不排他。如果想让按钮排他响应,只需将按钮的exclusiveTouch设置为YES即可。
实际编程中我一般会在viewDidLoad方法中对self.view中的subview进行遍历,如果是按钮对象就将它的exclusiveTouch属性设为YES。
示例代码:
另外说明:手势识别会忽略exclusiveTouch设置。详见苹果官方例子:SimpleGestureRecognizers。
。其实UIView类属性有个exclusiveTouch属性,表示是否该view响应触摸是排他的。默认的设置是NO,即不排他。如果想让按钮排他响应,只需将按钮的exclusiveTouch设置为YES即可。
实际编程中我一般会在viewDidLoad方法中对self.view中的subview进行遍历,如果是按钮对象就将它的exclusiveTouch属性设为YES。
示例代码:
for (UIView *subview in self.view.subviews) { if ([subview isKindOfClass:[UIButton class]]) { subview.exclusiveTouch = YES; } }
另外说明:手势识别会忽略exclusiveTouch设置。详见苹果官方例子:SimpleGestureRecognizers。
本文介绍如何在iOS应用中通过设置UIView的exclusiveTouch属性来实现按钮的排他响应,防止同时按下不同按钮导致的不可预知结果。通过遍历view的子视图并针对按钮对象进行配置,确保触摸事件被正确处理。
1165

被折叠的 条评论
为什么被折叠?



