防止button连续点击的几个小技巧

作者: 逆流丶而上 | 来源:发表于2016-08-16 16:56 被阅读2048次

在使用button的时候,用户往往不会按照开发人员想的来操作,比如连续点击。。。

下面介绍几个防止重复点击的方法

1、继承

自己创建一个button,继承于UIButton,然后重写点击方法sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event. 如下图

wtkFlag为自己添加的属性,用来判断当前button是否可以点击。为BOOL类型。点击5秒后,再把wtkFlag取反。就可以再次点击了。

2、runtime

使用runtime进行方法替换。在button的类别方法中,重写load方法,在load方法里边进行方法替换

自定义的方法如下

利用系统button的enable属性来控制button的点击频率。不过缺点就是enable这个属性在外部就不能再使用了。

如果想使用的话,可以使用runtime关联(associate)来添加属性,给button添加一个属性来记录当前button是否可以点击。

如下图

在类别中给button添加一个属性

这时候这个属性还是不能用的,因为类别中不能添加属性。需要实现wtkFlag的set、get方法

runtime关联对象添加属性

这时候就有了wtkflag这个属性了,在替换sendAction方法中使用即可。与继承类似。

demo连接 github.com/wangtongke/WTKButton.git

相关文章

网友评论

  • 超_iOS:- (void)wtkSendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event
    {

    [self wtkSendAction:action to:target forEvent:event];
    ...
    }
    楼主,问个小白问题.为什么要自己调用下自己啊?不是死循环了么?望解答
    逆流丶而上:@_超 方法已经交换了,调这个方法实际上调的是已经交换的方法。
  • 一达:很牛逼 很强大
    逆流丶而上:@苏35 感谢支持
  • 凯文Kevin21:我在xib上拖了一个UIButton关联我自定义的按钮, 我点击按钮的时候这个-(void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event方法没有执行啊。
    逆流丶而上:@七秒小鱼人 文章后面有github连接,可以试试
    逆流丶而上:@七秒小鱼人 继承的话,需要在xib中更改button的类型的。类别的话我试了一下可以的。
    逆流丶而上:@七秒小鱼人 是用的继承还是类别

本文标题:防止button连续点击的几个小技巧

本文链接:https://www.haomeiwen.com/subject/xpmpsttx.html