今天看到一個(gè)有趣的屬性,可以避免同一個(gè)界面上的多個(gè)button同時(shí)點(diǎn)擊。于是就想把這篇博文記錄下來(lái),為了尊重原作者赔退,把原文地址貼在前面。
原文地址:http://blog.csdn.net/liu1347508335/article/details/50617644
一個(gè)頁(yè)面的兩個(gè)或者多個(gè)button如果不設(shè)置的話是可以同時(shí)點(diǎn)擊的证舟,如果事件沖突的話就會(huì)出問(wèn)題硕旗,如“發(fā)送”和“取消”。一些push操作也會(huì)push多個(gè)頁(yè)面女责,交互十分不友好漆枚。解決方法是設(shè)置button的exclusiveTouch為YES。
button.exclusiveTouch = YES;
ExclusiveTouch的作用是:可以達(dá)到同一界面上多個(gè)控件接受事件時(shí)的排他性,從而避免一些問(wèn)題抵知。也就是說(shuō)避免在一個(gè)界面上同時(shí)點(diǎn)擊多個(gè)button墙基。
如果一個(gè)頁(yè)面的button太多的話一個(gè)一個(gè)設(shè)置會(huì)比較麻煩,可以這樣:
-(void)setExclusiveTouchForButtons:(UIView *)myView
{
for (UIView * button in [myView subviews]) {
if([button isKindOfClass:[UIButton class]])
[((UIButton *)button) setExclusiveTouch:YES];
else if ([button isKindOfClass:[UIView class]]){
[self setExclusiveTouchForButtons:button];
}
}
}
但是這樣需要在每個(gè)控制器都要設(shè)置刷喜〔兄疲可以采用一句話來(lái)代替這樣的設(shè)置,在AppDelegate中添加:
[[UIButton appearance] setExclusiveTouch:YES];
有人可能不知道模擬器怎么模擬兩根手指同時(shí)點(diǎn)擊的事件掖疮,補(bǔ)充一下:按住option鍵調(diào)節(jié)兩根手指的距離初茶,再按住Shift鍵調(diào)整兩根手指的位置(option鍵不要放開(kāi));這樣就模擬點(diǎn)擊屏幕上任意兩點(diǎn)的位置浊闪。