UIView有个exclusiveTouch的属性,这个属性主要是解决多个控件同时响应事件的问题,将exclusiveTouch设置为YES的话可以阻止同一个window中其他控件与他响应,默认为NO。
举个例子:页面中有按钮buttonA 和 buttonB,点击ButtonA会push该页面,点击ButtonB则会pop该页面,如果同时点击这个按钮的话页面就会连续出现pop和push的效果。如果设置了exclusiveTouch为YES的话则可以避免发生这种事情。
方法一:
可以使用 appearance 在APPDelegate中对UIButton进行统一的设置。
[[UIButton appearance] setExclusiveTouch:YES];
由于exclusiveTouch这个属性是UIView的属性,所以也可以这样写:
[[UIView appearance] setExclusiveTouch:YES];
两者有什么区别需要大家自己体验哟~
方法二:
-(void)theExclusiveTouchForButton:(UIView *)myView{
for (UIView *button in [myView subviews]) {
if ([button isKindOfClass:[UIButton class]]) {
[(UIButton *)button setExclusiveTouch:YES];
}else if ([button isKindOfClass:[UIView class]]){
[self theExclusiveTouchForButton:button];
}
}
}
好了,over~~~