之前遇到实时监听 UItextField变化发现使用它的代理方法会有其他问题出现,最后得出结论得添加addtarget事件才可以,趁着这会有时间,把这些整理一下。如果你也遇到了此问题,那么请看以下说明,助你了解并解决问题
- 这个时候,自然会想到使用UItextField的代理方法:
#pragma mark -监听uitextfield的值得变化
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSLog(@"textField4 - 正在编辑, 当前输入框内容为: %@",textField.text);
return YES;
}
但是这个方法有一个问题,他只会监听每次输入或者删除前的值是多少,当修改后,你并不知道最后一个字符改变后,UITextField中的值是多少。
也可能会想到,每次结束编辑的时候,将相应的UITextField中的值传出,这个时候调用:
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
str = textField.text;
return YES;
}
但是这个方法的前提是你点击了return按钮,否则并不会被调用:
为了能够实时的监听textField的输入的改变,首先给UItextField添加一个编辑事件,每次这个事件触发一个函数,在相应的函数中得到UItextField的值。当然你也可以在这个函数中做你想要的处理,比如将UItextField的值以通知的形式发送给相关的控制器,以便做下一步处理。而在本项目中,只需要实时的记录每一个cell中的UItextField的值就可以。
具体代码如下:
[textField addTarget:self action:@selector(changedTextField:) forControlEvents:UIControlEventEditingChanged];
#pragma mark -给每个cell中的textfield添加事件,只要值改变就调用此函数
-(void)changedTextField:(id)textField
{
NSLog(@"值是---%@",textField.text);
}
网友评论