美文网首页UITextFieldiOS 解决方案iOS
iOS 实时监听UItextField变化

iOS 实时监听UItextField变化

作者: coco_CC | 来源:发表于2018-10-24 11:03 被阅读1036次

    之前遇到实时监听 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); 
    }
    
    

    相关文章

      网友评论

        本文标题:iOS 实时监听UItextField变化

        本文链接:https://www.haomeiwen.com/subject/esettqtx.html