(转载)Objective-C多个UIButton同时点击问题

今天看到一个有趣的属性,可以避免同一个界面上的多个button同时点击。于是就想把这篇博文记录下来,为了尊重原作者,把原文地址贴在前面。
原文地址:http://blog.csdn.net/liu1347508335/article/details/50617644
一个页面的两个或者多个button如果不设置的话是可以同时点击的,如果事件冲突的话就会出问题,如“发送”和“取消”。一些push操作也会push多个页面,交互十分不友好。解决方法是设置button的exclusiveTouch为YES。

button.exclusiveTouch = YES;

ExclusiveTouch的作用是:可以达到同一界面上多个控件接受事件时的排他性,从而避免一些问题。也就是说避免在一个界面上同时点击多个button。
如果一个页面的button太多的话一个一个设置会比较麻烦,可以这样:

-(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];
        }
    }
}

但是这样需要在每个控制器都要设置。可以采用一句话来代替这样的设置,在AppDelegate中添加:

 [[UIButton appearance] setExclusiveTouch:YES];

有人可能不知道模拟器怎么模拟两根手指同时点击的事件,补充一下:按住option键调节两根手指的距离,再按住Shift键调整两根手指的位置(option键不要放开);这样就模拟点击屏幕上任意两点的位置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,581评论 25 708
  • 金牌和银牌的距离,有时候可能只是0.13秒,有时候可能只是0.2环,有时候是1分,有时候是0.01分,你可能觉得这...
    二肉肉阅读 319评论 0 0
  • 慢慢学会静下心来学一些东西, 慢慢学会看到自己的优点, 慢慢学会不理会别人的眼光, 从小到大一路顺利成长于正常家庭...
  • 寻址方式在C语言里面也可以称为一个内存操作,说到寻址方式,我们就会想哪里有地址,当然就是存储器,而存储器就包括内存...
    随波逐流007阅读 1,698评论 0 0
  • 地震来了 地震来了 地震来了 仿佛"狼来了"一样,三次警告后,狼真的来了。可怕的不是狼来了,真正可怕的是狼多次吞掉...
    三俗哥阅读 1,258评论 4 5