场景
在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,问题解决了。🙃🙃🙃









网友评论