ios obj-c 延迟时间后没收到通知就执行操作

news/2024/7/20 20:37:57 标签: ios, 计时器, timer

不论是在android还是ios,都会有个问题,就是根据输入框内容进行接下来操作,如果是请求网络数据的话,那么随时改变文本内容就直接请求网络的话,想象一下,快速删除文本,几十毫秒删掉一个字符串,然后请求一下网络,那么会造成服务器的负担,而且还可能会出现数据错乱。

所以这时候就出现了该需求,就是在用户一段时间不进行频繁操作之后就执行最后的操作。

android方面可以用handler和message配合使用。(后面如果有人需求的话,我可以贴出来)

ios这一块呢,不是特别熟练,所以根据逻辑,我只需要在网上找到一个可以延迟执行的操作就行了,剩下的我改改就行了。接下来我用计时器Timer,和UITextField作为例子。

这里的textFieldDidChange方法比较特别一点,并不是UITextField的委托协议里面的方法,而是要自己添加事件来的。如下

[self.textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

添加了事件后,每一次输入都会回调下面的方法。如下

//监听文本变化的方法
-(void)textFieldDidChange:(UITextField*)textField{
    //NSLog( @"text changed: %@", textField.text);

    //一秒之后没操作才执行delayMethod方法
    if (timer!=nil) {
        [timer invalidate];
        timer=nil;
    }
    timer=[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];


}

来看看上面的代码,timer定义为全局对象,然后改变文本内容之后进行判断是否初始化过,如果是,那么重置为空对象,然后重新初始化计时器timer,让其重新计时一秒,然后会在文本改变后一秒内不改变之后进行操作。

看看timer的初始化方法,第一个参数是延迟的时间(CGFloat);第二个参数是执行的对象;第三个参数是延迟后需要执行的方法,这里说一下,如果该方法是需要传数据过去的话,方法名需要带冒号,这里没有传数据就直接方法名;第四个不清楚,猜想是传数据用的;第五个是判断是否需要重复执行,这里不需要。

然后就这么简单的实现了,这是我简单的实现而已,因为对ios还不是特别的熟练,所以只能用一些普遍的方法实现自己的一些需求,如果有更好的方法,可以告知一下。


http://www.niftyadmin.cn/n/994357.html

相关文章

SQL2K数据库开发五之表操作管理用户定义的数据类型

1.可以使用系统过程sp_addtype来增加一个用户定义的数据类型。下图表明了sp_addtype过程的用法: 2.可以在查询分析器中使用下面的语句创建一个名为birthday的用户定义数据类型。该数据类型是基于datetime的,并允许为空值。 3.在SQL Server企业管理器中创…

3种方式遍历repeater中的CheckBox全选

方式1: foreach (Control c in this.Repeater1.Controls) { HtmlInputCheckBox check (HtmlInputCheckBox)c.FindControl("cbDelete1"); if( check ! null ) { check.Checked true; } } 方式2: for (int i0;i<this.Repeater1.Items.Count;i) …

SQL Server数据库服务器负载均衡集群的实现

MS SQL Server数据库服务器可以说是应用范围最广的数据库产品&#xff0c;并且越来越多地在大型和比较关键的应用系统中提供服务。当企业应用越来越复杂、数据量越来越大的时候&#xff0c;SQL Server数据库要不停的进行处理、存储、查询的工作&#xff0c;这个时候企业就要考虑…

Cookies 和 Session的区别

2019独角兽企业重金招聘Python工程师标准>>> Cookies 和 Session的区别 1.cookie 是一种发送到客户浏览器的文本串句柄&#xff0c;并保存在客户机硬盘上&#xff0c;可以用来在某个WEB站点会话间持久的保持数据。 2.session其实指的就是访问者从到达某个特定主页到…

ios obj-c KVO模式的介绍和使用

在项目需求中&#xff0c;其中有一个需求是监听某个自定义View的隐藏显示来进行其他操作&#xff0c;比如说自定义View里面有个UITextField&#xff0c;当软键盘显示时&#xff0c;隐藏该自定义View的时候需要把软键盘也隐藏掉&#xff0c;这时候如果在依赖该自定义view的类当中…

.net 软件注册功能的简单实现

相信很多初学编程的人都会对这个软件注册功能很感兴趣&#xff0c;我也不例外&#xff0c;刚学asp.net时&#xff0c;竞找不到这方面的实例&#xff0c;结果自己参考微软的一些文档自己做了一个&#xff0c;其实我做的这个注册功能很简单&#xff0c;读取计算机的CPU序列号&…

python Docker 查看私有仓库镜像

pip 安装&#xff1a; 首先安装epel扩展源&#xff1a;yum -y install epel-release更新完成之后&#xff0c;就可安装pip&#xff1a;yum -y install python-pip安装完成之后清除cache&#xff1a;yum clean all request模块安装&#xff1a; pip install request #!/usr/bin/…

博客园的故事-愤怒时的呐喊

从前有一个寺院&#xff0c;据说是由一位高僧创办&#xff0c;居创办以来&#xff0c;陆续有业界大牛和武林高手前来传道&#xff0c;据说是全国第一&#xff0c;可以将.net修炼到第十层&#xff0c;达到金刚不破之身&#xff0c;一时寺院名气大震&#xff0c;江湖上的名人志士…