没有合适的资源?快使用搜索试试~ 我知道了~
iOS中监听UITextField值改变事件的方法实例
0 下载量 123 浏览量
2021-01-20
09:07:39
上传
评论
收藏 86KB PDF 举报
温馨提示
试读
2页
前言 在实际情况中我们有时候在界面输入时候需要让用户输入的数据与模型同步,那么可能我们就需要监听UITextField值改变事件,然后在响应的方法中将新的值同步到模型中。这次我们主要提出三种方案,其中第一种方案是不一定有效的,后两种方案则是比较可靠的方案。 一、实现UITextFieldDelegate协议。 这种方式实际上是由系统空间回调协议中的方式,并且通过查阅文档我们可以发现有以下相关接口是相关的。 – (BOOL)textFieldShouldBeginEditing:(UITextField *)textField – (void)textFieldDidBeginEditing
资源详情
资源评论
资源推荐
iOS中监听中监听UITextField值改变事件的方法实例值改变事件的方法实例
前言前言
在实际情况中我们有时候在界面输入时候需要让用户输入的数据与模型同步,那么可能我们就需要监听UITextField值改变事
件,然后在响应的方法中将新的值同步到模型中。这次我们主要提出三种方案,其中第一种方案是不一定有效的,后两种方案
则是比较可靠的方案。
一、实现一、实现UITextFieldDelegate协议。协议。
这种方式实际上是由系统空间回调协议中的方式,并且通过查阅文档我们可以发现有以下相关接口是相关的。
– (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
– (void)textFieldDidBeginEditing:(UITextField *)textField
– (BOOL)textFieldShouldEndEditing:(UITextField *)textField
– (void)textFieldDidEndEditing:(UITextField *)textField
代码如下:
- (void)textFieldDidEndEditing:(UITextField *)textField
{
self.model.text = textField.text;
}
然后实践中我尝试了实现textFieldDidEndEditing:方法,发现在输入框获取焦点,然后输入结束,失去焦点后这个过程是正常
的。但是问题就出在第三步,如果输入框一直没失去焦点(放弃第一响应者),那么这个方法将不会调用,也就是说没法更新
模型了。所以说这种方案是不一定有效的。
二、注册二、注册NSNotificationCenter进行监听。进行监听。
亲测这种方案是可行的。通知中心是一种一对多的模型,观察者通过向通知中心注册某个事件,然后当某个事件发生时,观察
者就可以收到通知中心发来的该事件的通知,然后调用指定的方法进行事件处理。并且刚好通知中心就有针对于UITextField
值改变的监听事件,所以我们只需要实现事件注册和事件处理的方法就好了。
PS:注册的通知事件记得要移除!!!:注册的通知事件记得要移除!!!
((1)注册通知事件。)注册通知事件。
//这里的object传如的是对应的textField对象,方便在事件处理函数中获取该对象进行操作。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(textFieldDidChangeValue:)
name:UITextFieldTextDidChangeNotification
object:_textFiled];
(2)实现监听处理事件。
//这里可以通过发送object消息获取注册时指定的UITextField对象
- (void)textFieldDidChangeValue:(NSNotification *)notification
{
UITextField *sender = (UITextField *)
;
self.model.text = sender.text;
}
(3)别忘了移除注册的通知。
//一般是在dealloc中实现
[[NSNotificationCenter defaultCenter] removeObserver:self];
三、目标三、目标-动作机制。动作机制。
大家应该都清楚继承自UIControl类的组件都具有动作-目标机制的特性,常见的比如说
UIButton,UISwitch,UISlide,UIPageControl这些类型的组件也都有这个特性。感觉这个比通知中心要更来得灵活一点,比
如多个UITextField可以响应多个SEL,或者也可以设置为响应同一个SEL,然后只要在SEL判断一下消息发送者是谁就好了。
weixin_38688890
- 粉丝: 6
- 资源: 964
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- alu.v
- H21-282学习参考.pdf
- QuestionTwo.java
- QuestionOne.java
- AWS Certified Solutions Architect Study Guide -SAA-C03 .docx
- 校园小情书微信小程序源码 社区小程序前后端开源 校园表白墙交友小程序.rar
- OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).rar
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- 南京邮电大学数学实验:熟练掌握 Matlab 软件的基本命令和操作
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0