美文网首页
textField基础类

textField基础类

作者: 架构师的一小步 | 来源:发表于2019-08-16 10:10 被阅读0次

    转自:https://www.cnblogs.com/312294025myj/p/7308109.html

    回调解释

    监听文本框中的内容的几种方式:(用于登录账号-用于搜索)
    1.代理 (只能监听设置了代理的文本框没有设置代理的文本框不能进行监听)                                                                                                              
    <UITextFieldDelegate>
    
    _UserID.delegate=self(设置代理)
    
    
    //是否可以编辑yes可以 no不可以
    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
       return YES;
    }
    //开始编辑的时候调用
    - (void)textFieldDidBeginEditing:(UITextField *)textField{
       NSLog(@"开始编辑");
    }
    
    //是否允许结束编辑(当用户结束一个文本框的时候,首先会调用这个)
    //如果是NO 意思就是,这个文本框回一直处于编辑状态(也叫第一响应者),就算你再点击其他文本框,是没有任何效果的
    - (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
       return YES;
    }
    //结束编辑的时候调用
    - (void)textFieldDidEndEditing:(UITextField *)textField{
       NSLog(@"结束编辑");
    }
    
    //是否允许用户输入文件
    //用户每次输入一个字符的时候就会调用一次。然后判断是非显示在文本框里
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
      //打印
       NSString *text=[NSString stringWithFormat:@"%@%@",textField.text,string];
       NSLog(@"------%@",text);
       return YES;
    }
    //是否允许清除当前文本框中所输入的内容
    - (BOOL)textFieldShouldClear:(UITextField *)textField{
       return YES;
    }
    
    2.通知  (可以监听所有的文本框)                                                                                                             
    
    /*
        UITextFieldTextDidChangeNotification //文本框改变的通知
        object:_UserID 表示_UserID 这一个文本框
        object:nil     表示 所有的文本框
        */
    [NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:nil];
    
    -(void)textChange{
       NSLog(@“-----Change-----");
    }
    
    //当前对像要销毁的时候,创建的通知要进行移除:(否则可能报错,坏内存访问)
    -(void)dealloc{
       [[NSNotificationCenter defaultCenter] removeObserver:self];
    }
    
    3.监听者(addTarget)()                                                                                                             
    
    /*
        Events(事件):当我产生什么事件的时候会掉用这个方法
        UIControlEventEditingChanged : 当文本框进行编辑
        */
    
       [_UserID addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged];
      
       [_Password addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged];
     
    }
    //我把2个文本框的监听触发方法都设置为textChange 目的是判断登录按钮是否可以点击
    //只有2个文本框都有值才可以进行点击(这里根据自己的需要)
    -(void)textChange{
       if(_UserID.text.length && _Password.text.length){
           _LoginBut.enabled=YES;
       }else{
        _LoginBut.enabled=NO;
       }
    //这个判断可以优化为一行:
       _LoginBut.enabled=_UserID.text.length && _Password.text.length;
    
       NSLog(@"gaibia-----");
    }
    

    相关文章

      网友评论

          本文标题:textField基础类

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