iOS 防止UIButton 连续点击导致请求多次的问题!

2024-08-21 06:48

本文主要是介绍iOS 防止UIButton 连续点击导致请求多次的问题!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在项目中,很多逻辑请求都需要用到UIButton 做点击事件进行相关跳转或数据请求等!可以说是在项目中最常用的一种控件,但是有些细节上的处理还是我们要多注意的,比如我们今天说的连续点击UIButton导致数据请求多次的问题,或许这个问题网上已经有了很多相关资料,毕竟这个没什么难的!流传的无非就是那几个方法,第一种方法是通过使用runtime,设置UIButton0.5秒内不会被重复点击,第二种是在每次点击时先取消之前的操作,第三种是在点击后设为不可被点击的状态,通过UIButton的enabled属性来设置!

其实在我看来,我是比较中意第二种方法的,因为这样不会影响到界面交互的一个流畅性问题,但是在某些情况下还是需要第三种方法去实现!至于第一种方法,听起来可能是高端大气上档次,但是我表示“呵呵”,纯粹是误人子弟!如果我们在通过点击UIButton的点击事件做网络请求的时候,难道你就能够保证在runtime的时间之内能够收到网络请求的返回结果吗?如果是在网络不好的情况下,很有可能导致你这个请求是发送的N遍,然后最后获取到N中结果,如果你是通过addObjectsFromArray等方法添加数据的话,很有可能会导致添加数据重复的问题!

还有一种情况是比如我建立一个webSocket链接,然后需要通过点击UIButton,切换向服务器发送不同的数据请求,如果我用第一种方法的话就会导致不停地重复向服务器发送数据请求,然后收到N多条同样的数据,如果数据比较多的话直接会在你进行UI刷新的时候造成卡顿现象!虽然中间可能间隔了你设置的runtime时间,但是仍然避免不了!至于第三种方法虽然能够避免这个问题,但是会导致切换UI界面的不流畅的问题,因为你必须要等到收到服务器返回的结果后才能够点击不同的UIButton来切换界面!这种情况下我们就要使用第二种方法!

但是在有些情况下,如果我必须等收到服务器的返回结果才能够响应某种事件的话就必须要用到第三种方法,如果用第二种方法的话,你会在连续不停地点击UIButton事件的时候始终陷入一个循环,直到你手指离开屏幕才会响应,无疑会增加客户端cpu的服务压力!

至于什么时候使用runtime 的来解决UIButton 的连续点击造成的问题,我建议大家还是慎用!不要被千篇一律的重复博客、文章所误导!毕竟适合自己的才是最好的!

这篇关于iOS 防止UIButton 连续点击导致请求多次的问题!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092425

相关文章

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

如何解决Spring MVC中响应乱码问题

《如何解决SpringMVC中响应乱码问题》:本文主要介绍如何解决SpringMVC中响应乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC最新响应中乱码解决方式以前的解决办法这是比较通用的一种方法总结Spring MVC最新响应中乱码解

pip无法安装osgeo失败的问题解决

《pip无法安装osgeo失败的问题解决》本文主要介绍了pip无法安装osgeo失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 进入官方提供的扩展包下载网站寻找版本适配的whl文件注意:要选择cp(python版本)和你py

解决Java中基于GeoTools的Shapefile读取乱码的问题

《解决Java中基于GeoTools的Shapefile读取乱码的问题》本文主要讨论了在使用Java编程语言进行地理信息数据解析时遇到的Shapefile属性信息乱码问题,以及根据不同的编码设置进行属... 目录前言1、Shapefile属性字段编码的情况:一、Shp文件常见的字符集编码1、System编码

Spring MVC使用视图解析的问题解读

《SpringMVC使用视图解析的问题解读》:本文主要介绍SpringMVC使用视图解析的问题解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC使用视图解析1. 会使用视图解析的情况2. 不会使用视图解析的情况总结Spring MVC使用视图

Redis解决缓存击穿问题的两种方法

《Redis解决缓存击穿问题的两种方法》缓存击穿问题也叫热点Key问题,就是⼀个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击,本文给大家介绍了Re... 目录引言解决办法互斥锁(强一致,性能差)逻辑过期(高可用,性能优)设计逻辑过期时间引言缓存击穿:给

Java程序运行时出现乱码问题的排查与解决方法

《Java程序运行时出现乱码问题的排查与解决方法》本文主要介绍了Java程序运行时出现乱码问题的排查与解决方法,包括检查Java源文件编码、检查编译时的编码设置、检查运行时的编码设置、检查命令提示符的... 目录一、检查 Java 源文件编码二、检查编译时的编码设置三、检查运行时的编码设置四、检查命令提示符