前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >iOS Target-Action设计模式的运用之【限制按钮的点击频率】

iOS Target-Action设计模式的运用之【限制按钮的点击频率】

作者头像
公众号iOS逆向
发布于 2021-07-05 13:05:16
发布于 2021-07-05 13:05:16
41100
代码可运行
举报
文章被收录于专栏:iOS逆向与安全iOS逆向与安全
运行总次数:0
代码可运行
  • 1.1 原理分析
  • 1.2 代码实现
  • 1.3 使用和测试

引言

在项目开发中,会对数据库数据进行更新操作的接口请求,不仅服务器侧需要控制请求频率以及保证数据的唯一性和一致性,app侧也需要进行限制来避免测试垃圾数据

常用的方案有

1、限制按钮的点击频率: 针对注册类接口的时间间隔timeInterval可设置长些,推荐0.5s 2、新增标志对单个接口进行请求频率的控制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

/**
 控制接口的请求标志
 */
@property (assign, nonatomic) BOOL IsreqingGetCurrentSysUser;


I、限制按钮的事件响应频率

在这里插入图片描述

1.1 原理分析

原理:利用runtime API 对UIControl方法sendAction:to:forEvent:进行方法实现的交换,来控制事件的响应频率

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        SEL selA = @selector(sendAction:to:forEvent:);

如果按钮的事件处理采用添加UITapGestureRecognizer 手势的实现的,同理也是可以类似地进行Method Swizzling实现响应频率的限制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        UITapGestureRecognizer *cutTap = [[UITapGestureRecognizer alloc] init];
        [[cutTap rac_gestureSignal] subscribeNext:^(id x) {
            
            
            NSLog(@" cutTap 点击了 ");
            
            if ( self.models.block) {
                self.models.block(self.models);
            }
            
            
        }];
        [self addGestureRecognizer:cutTap];


倒计时巧妙地使用performSelector:withObject:afterDelay:实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            [self performSelector:@selector(resetState) withObject:nil afterDelay:self.timeInterval];// 

1.2 代码实现

在这里插入图片描述

本文案例是采用分类的形式,你可以选择自定义控件的方式进行实现

头文件

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iOS逆向 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iOS小技能: 限制按钮的点击频率(Target-Action设计模式的运用)
在项目开发中,会对数据库数据进行更新操作的接口请求,不仅服务器侧需要控制请求频率以及保证数据的唯一性和一致性,app侧也需要进行限制来避免产生垃圾数据
公众号iOS逆向
2022/08/22
8860
iOS小技能: 限制按钮的点击频率(Target-Action设计模式的运用)
函数响应式编程及ReactiveObjC学习笔记 (二)
之前我们初步认识了RAC的设计思路跟实现方式, 现在我们再来看看如果使用它以及它能帮我们做什么
周希
2019/10/15
5060
iOS小技能: 网络加载中处理、接口暂无数据处理、全局监听用户点击事件
在日常开发中经常涉及数据列表的查询,处理服务侧无数据返回的情况或者网络异常的手段是iOS必备小技能。
公众号iOS逆向
2022/08/22
7890
iOS小技能: 网络加载中处理、接口暂无数据处理、全局监听用户点击事件
给我十个可爱的订阅的粉丝带来的一篇iOS面经。。。。
大大小小参加过不下30+公司的面试,其中不乏BAT、TMD等一线互联网公司,总结一下,发现大厂招聘都有一个共性。
Kris大鲨
2018/05/05
1.2K2
给我十个可爱的订阅的粉丝带来的一篇iOS面经。。。。
iOS开发·runtime原理与实践: 方法交换篇(Method Swizzling)(iOS“黑魔法”,埋点统计,禁止UI控件连续点击,防奔溃处理)
Method Swizzing是发生在运行时的,主要用于在运行时将两个Method进行交换,我们可以将Method Swizzling代码写到任何地方,但是只有在这段Method Swilzzling代码执行完毕之后互换才起作用。
陈满iOS
2018/09/10
2.8K0
iOS开发·runtime原理与实践: 方法交换篇(Method Swizzling)(iOS“黑魔法”,埋点统计,禁止UI控件连续点击,防奔溃处理)
iOS小技能: Target-Action设计模式的运用
例子:当用户操纵控件对象(按钮/滑块)时,它会将消息发送到指定的对象。控制对象是UIControl(iOS)或NSControl(OSX)子类的实例。
公众号iOS逆向
2022/08/22
8760
iOS小技能: Target-Action设计模式的运用
iOS底层原理总结 - RunLoop
面试题 讲讲 RunLoop,项目中有用到吗? RunLoop内部实现逻辑? Runloop和线程的关系? timer 与 Runloop 的关系? 程序中添加每3秒响应一次的NSTimer,当拖动tableview时timer可能无法响应要怎么解决? Runloop 是怎么响应用户操作的, 具体流程是什么样的? 说说RunLoop的几种状态? Runloop的mode作用是什么? 一. RunLoop简介 运行循环,在程序运行过程中循环做一些事情,如果没有Runloop程序执行完毕就会立即退出,如果有Ru
xx_Cc
2018/05/10
1.4K0
iOS开发·runtime原理与实践: 关联对象篇(Associated Object)(应用场景:为分类添加“属性”,为UI控件关联事件Block体,为了不重复获得某种数据)
分类(category)与关联对象(Associated Object)作为objective-c的扩展机制的两个特性:分类,可以通过它来扩展方法;Associated Object,可以通过它来扩展属性;
陈满iOS
2018/09/10
3K0
iOS开发·runtime原理与实践: 关联对象篇(Associated Object)(应用场景:为分类添加“属性”,为UI控件关联事件Block体,为了不重复获得某种数据)
iOS动画之【添加商品到购物车】:将商品图片icon 移动到购物车iocn的位置
demo下载地址:https://download.csdn.net/download/u011018979/20045082
公众号iOS逆向
2023/09/11
2560
iOS动画之【添加商品到购物车】:将商品图片icon 移动到购物车iocn的位置
iOS小技能:设置tableView的点击事件优先级低于cell的选中事件
场景1:比如筛选视图,监听蒙版的点击事件就隐藏筛选视图。优先处理筛选视图的cell选中事件。
公众号iOS逆向
2022/08/22
1.3K0
iOS小技能:设置tableView的点击事件优先级低于cell的选中事件
iOS_Runtime是什么?原理?作用?怎么实现weak?使用
OC是基于C,并添加了面向对象的特性,将很多静态语言在编译和链接时做的事放到了runtime运行时来处理
mikimo
2022/07/20
4200
iOS_Runtime是什么?原理?作用?怎么实现weak?使用
iOS 无侵入埋点组件总结
根据标识来识别每一个事件, 针对指定的事件进行取参埋点。而事件的标识与参数信息都写在配置表中,通过动态下发配置表来实现埋点统计。
网罗开发
2021/08/13
3.1K0
iOS 开发:『Runtime』详解(二)Method Swizzling
文中示例代码在: bujige / YSC-Runtime-MethodSwizzling
程序员充电站
2019/07/15
2K1
iOS 开发:『Runtime』详解(二)Method Swizzling
iOS 中的事件响应
iOS 中的事件响应者主要分为两类,分别为UIResponder及UIGestureRecognizer,其中UIControl是一种比较特殊的UIResponder,所以本文将事件响应者分为以下三种类型进行讨论。
CoderStar
2022/08/24
2.8K0
iOS 中的事件响应
iOS runloop 的基本使用 、构成及应用案例(基于CFRunLoopDoSources0自定义Operation)
原文链接:https://blog.csdn.net/z929118967/article/details/114638658
公众号iOS逆向
2021/03/24
1.1K0
iOS runloop 的基本使用 、构成及应用案例(基于CFRunLoopDoSources0自定义Operation)
备战九十,iOS面试题菜单,持续更新(题目及答案已上传Github)
Objective_C语言特性 (戳这里跳转到Github) 分类 扩展 代理(Delegate) 通知(NSNotification) KVO (Key-value observing) KVC(Key-value coding) 属性关键字 runloop (戳这里跳转到Github) RunLoop概念 RunLoop的数据结构 RunLoop的Mode RunLoop的实现机制 RunLoop与NSTimer RunLoop和线程 讲一下 Observer ? autoreleasePool 在何时
iOSSir
2019/07/02
1.4K0
iOS开发笔记(二)
前言 开发做笔记是好习惯,总结分享是巩固记忆。 遇到问题,思考其背后的原因、原理。 AFNetworking 1、progress回调block,不在主线程; 2、iPhone4+iOS7,progress回调异常; AFNetworking 处理请求是在后台线程。 关闭键盘 在任意界面,dismiss键盘。(苹果的响应链设计) [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil f
落影
2018/04/27
9490
iOS开发笔记(二)
【IOS开发高级系列】MVVM—ReactiveCocoa架构设计专题(三)
http://www.cocoachina.com/ios/20150123/10994.html
江中散人_Jun
2023/10/16
4570
【IOS开发高级系列】MVVM—ReactiveCocoa架构设计专题(三)
iOS 组件化之路由设计思路分析
前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高。为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VIPER等复杂架构。更换适合业务的架构,是为了后期能更好的维护项目。 但是用户依旧不满意,继续对开发人员提出了更多更高的要求,不仅需要高质量的用户体验,还要求快速迭代,最好一天出一个新功能,而且用户还要求不更新就能体验到新功能。为了满足用户需求,于是开发人员就用H5,ReactNative,Weex等技术对已有的项目进行改造。项目架构也变得更加的
xiangzhihong
2018/01/26
2.7K0
深入学习iOS定时器
定时器,用来延迟或重复执行某些方法,例如:网络定时刷新,UI间隔刷新,动画效果......iOS中的定时器大致分为这几类: <pre> NSObject GCD定时器 NSTimer CADisplayLink </pre>
sweet说好的幸福
2020/12/23
9910
推荐阅读
iOS小技能: 限制按钮的点击频率(Target-Action设计模式的运用)
8860
函数响应式编程及ReactiveObjC学习笔记 (二)
5060
iOS小技能: 网络加载中处理、接口暂无数据处理、全局监听用户点击事件
7890
给我十个可爱的订阅的粉丝带来的一篇iOS面经。。。。
1.2K2
iOS开发·runtime原理与实践: 方法交换篇(Method Swizzling)(iOS“黑魔法”,埋点统计,禁止UI控件连续点击,防奔溃处理)
2.8K0
iOS小技能: Target-Action设计模式的运用
8760
iOS底层原理总结 - RunLoop
1.4K0
iOS开发·runtime原理与实践: 关联对象篇(Associated Object)(应用场景:为分类添加“属性”,为UI控件关联事件Block体,为了不重复获得某种数据)
3K0
iOS动画之【添加商品到购物车】:将商品图片icon 移动到购物车iocn的位置
2560
iOS小技能:设置tableView的点击事件优先级低于cell的选中事件
1.3K0
iOS_Runtime是什么?原理?作用?怎么实现weak?使用
4200
iOS 无侵入埋点组件总结
3.1K0
iOS 开发:『Runtime』详解(二)Method Swizzling
2K1
iOS 中的事件响应
2.8K0
iOS runloop 的基本使用 、构成及应用案例(基于CFRunLoopDoSources0自定义Operation)
1.1K0
备战九十,iOS面试题菜单,持续更新(题目及答案已上传Github)
1.4K0
iOS开发笔记(二)
9490
【IOS开发高级系列】MVVM—ReactiveCocoa架构设计专题(三)
4570
iOS 组件化之路由设计思路分析
2.7K0
深入学习iOS定时器
9910
相关推荐
iOS小技能: 限制按钮的点击频率(Target-Action设计模式的运用)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验