场景
在iOS开发中,我们经常会遇到这么个问题:用户点击了一个按钮,此时app出现了卡顿,用户以为没有点到,于是又点了一下,这时app不卡了,开始了push
操作,此时就会出现push
两次的情况,这显然是不对的,那么我们在开发中应该如何避免这种问题的发生呢?下面我们就介绍一种方法。
解决方法
解决方法其实很简单,就是在每次点击UIButton
时,将之前的UIButton
事件取消掉即可,这就是实现思路,下面我们看具体的实现。
- 第一步不用多说,自然是先创建一个
UIButton
并给他添加点击事件。 -
第二步是最主要的,实现
UIButton
的点击事件,分为2步:- 取消之前
UIButton
的点击事件,代码如下:
- 取消之前
[[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(goSecondVC) object:sender];
- 执行
UIButton
点击事件:
[self performSelector:@selector(goSecondVC) withObject:sender afterDelay:0.1];
注意:
- 这里为什么要使用
performSelector:withObject:afterDelay:
来执行UIButton
的点击事件,而不是直接调用goSecondVC
,这是因为cancelPreviousPerformRequestsWithTarget:selector:object:
只能取消performSelector:withObject:afterDelay:
执行的操作。 -
afterDelay:0.1
这里的延迟时间个人感觉比较讲究,网上有些同学设置的0.2
,我试了一下,感觉有点延迟的太长了,用户体验不好,但是如果不延迟,即设置为0.0
的话,是没有任何卵用的,所以我个人感觉设置成0.1
是最好的,既可以实现效果,又不会让用户感觉到延迟。
ok,问题解决了。🙃🙃🙃
网友评论