事件监听的三种方法
2015-06-16 00:30
274 查看
事件监听的三种方法:
addTarget --用于监听一些点击、值改变等事件
代理 -- 监听一些开始、结束、选中某行等一些改变控制属性的一些事件
通知:上面都不行考虑使用通知
通知使用注意:只要监听通知就要移除通知,否则控制器销毁后,通知发送时就会找不到对象导致程序崩溃
文本框事件的监听:
textfied代理只能监听开始编辑结束编辑,能否改变文字,不能监听改变文字后的情况,本项目需要
监听文本框中是否有输入,代理和addTarget都不适用。
文本框发出的三个通知:
UIKIT_EXTERN NSString *const UITextFieldTextDidBeginEditingNotification;
UIKIT_EXTERN NSString *const UITextFieldTextDidEndEditingNotification;
UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification;
登录界面:
1. 登录按钮只有文本框都有文字才能点击
实现思路:文本框一改变就会发送通知名为UITextFieldTextDidChangeNotification的通知。故使用这个通知监听两个文本框内是否有内容。都有内容则控制登陆按钮的使能状态
代码:HGLoginViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
/* 设置文本框一些属性 */
// 占位符
self.countField.placeholder = @"请输入账户";
// 清空按钮
self.countField.clearButtonMode = UITextFieldViewModeWhileEditing;
self.pwdField.placeholder = @"请输入密码";
// 密文显示
self.pwdField.secureTextEntry = YES;
self.pwdField.clearButtonMode = UITextFieldViewModeWhileEditing;
/* 登陆按钮禁用 */
self.loginBtn.enabled = NO;
// 向系统通知中心注册监听通知的事件
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldChange) name:@"UITextFieldTextDidChangeNotification" object:self.countField];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldChange) name:@"UITextFieldTextDidChangeNotification" object:self.pwdField];
}
addTarget --用于监听一些点击、值改变等事件
代理 -- 监听一些开始、结束、选中某行等一些改变控制属性的一些事件
通知:上面都不行考虑使用通知
通知使用注意:只要监听通知就要移除通知,否则控制器销毁后,通知发送时就会找不到对象导致程序崩溃
文本框事件的监听:
textfied代理只能监听开始编辑结束编辑,能否改变文字,不能监听改变文字后的情况,本项目需要
监听文本框中是否有输入,代理和addTarget都不适用。
文本框发出的三个通知:
UIKIT_EXTERN NSString *const UITextFieldTextDidBeginEditingNotification;
UIKIT_EXTERN NSString *const UITextFieldTextDidEndEditingNotification;
UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification;
登录界面:
1. 登录按钮只有文本框都有文字才能点击
实现思路:文本框一改变就会发送通知名为UITextFieldTextDidChangeNotification的通知。故使用这个通知监听两个文本框内是否有内容。都有内容则控制登陆按钮的使能状态
代码:HGLoginViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
/* 设置文本框一些属性 */
// 占位符
self.countField.placeholder = @"请输入账户";
// 清空按钮
self.countField.clearButtonMode = UITextFieldViewModeWhileEditing;
self.pwdField.placeholder = @"请输入密码";
// 密文显示
self.pwdField.secureTextEntry = YES;
self.pwdField.clearButtonMode = UITextFieldViewModeWhileEditing;
/* 登陆按钮禁用 */
self.loginBtn.enabled = NO;
// 向系统通知中心注册监听通知的事件
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldChange) name:@"UITextFieldTextDidChangeNotification" object:self.countField];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldChange) name:@"UITextFieldTextDidChangeNotification" object:self.pwdField];
}
相关文章推荐
- 修改Java文件不用重启Tomcat服务
- 2015061507 - 注释说明
- [LeetCode][JavaScript]Text Justification
- !HDU 1243 反恐训练营--dp--(最长公共子序列)
- Android基本架构
- 《Java项目开发全程实录》的实例08企业门户网站(Jsp+javabean)学习笔记
- 2015061506 - 代码分析之代码格式(3)
- 转-Fragment+ViewPager组件(高仿微信界面)
- regular-第一课(正则表达式基础)
- java使用dom4j解析xml字符串
- 二叉查找树(5) - 判断一棵二叉树是否为BST
- Adding an instance to a MEF container
- 题库类产品如何计算题目的难度值
- log4net内部调试开启
- varnish详解3
- 设计模式学习--抽象工厂模式
- Servlet的生命周期
- MySQL存储过程详解 mysql 存储过程 (
- Android Studio导入Project的方法
- c#模拟js escape方法(转)