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

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

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

引言

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

常用的方案有

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

代码语言:javascript
复制

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


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

在这里插入图片描述

1.1 原理分析

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

代码语言:javascript
复制
        SEL selA = @selector(sendAction:to:forEvent:);

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

代码语言:javascript
复制
        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
复制
            [self performSelector:@selector(resetState) withObject:nil afterDelay:self.timeInterval];// 

1.2 代码实现

在这里插入图片描述

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

头文件

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • I、限制按钮的事件响应频率
    • 1.1 原理分析
      • 1.2 代码实现
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档