iOS开发 UItextFielddialing方法详解

对textfield的代理方法做一总结:

第一继承自UIControl

添加事件

    [textField addTarget : self action : @selector (didDone:) forControlEvents :UIControlEventEditingDidEndOnExit ];

触发方法的事件是个枚举值,可以自己研究。

首先是判断是否开始编辑,返回值是YES则可编辑,NO则不能编辑。

//进入编辑状态的检查,返回值为NO则无法编辑
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
    NSLog(@"应该开始编辑?--%s",__FUNCTION__);
    return YES;
}

进入编辑状态时,经过此方法:

//进入编辑状态
-(void)textFieldDidBeginEditing:(UITextField *)textField{
    NSLog(@"开始编辑--%s",__FUNCTION__);
}

每次输入,就走一次这个方法:

//问委托指定的文本是否应该被改变。是的如果指定的文本范围应该更换,否则,没有保持旧的文本。
/**
 *  审查每次输入的内容
 *
 *  @param textField 第一响应的文本框
 *  @param range     传进来的长度始终为0
 *  @param string    每次输入的内容
 *
 *  @return yes:显示 no:不显示
 */
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
//    NSLog(@"检测输入--%s",__FUNCTION__);
    /*range = NSMakeRange(0, 5);
    if ([textField.text length] > 5) {
        string = [textField.text substringWithRange:range];
    }*/
    
    /*NSLog(@"%@",textField);
    NSLog(@"range--%lu",range.length);
    NSLog(@"string--%@",string);*/
    return YES;
}

其中的代码是一些调试代码,用来查看参数是什么,以及什么时候执行内容

判断是否结束输入,返回值为YES则可以结束,否则不能结束:

//是否结束编辑
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{
    NSLog(@"是否结束编辑--%s",__FUNCTION__);
    return YES;
}

已经结束编辑是进入此方法:

//结束编辑
-(void)textFieldDidEndEditing:(UITextField *)textField{
    NSLog(@"结束编辑--%s",__FUNCTION__);
}

按回车键时进入此方法:

//回车键
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    NSLog(@"回车键按下--%s",__FUNCTION__);
    BOOL temp = [textField resignFirstResponder];
    NSLog(@"%d",temp);
    return YES;
}

按清除键进入?

//问委托如果文本字段的当前内容应该删除。
-(BOOL)textFieldShouldClear:(UITextField *)textField{
    NSLog(@"是否清除--%s",__FUNCTION__);
    
    return NO;
}

这个我尝试了按回退键,应该是清除键,但是不起作用,改变返回值也没有什么效果,还请大神指点,这个方法到底是干什么的?


你可能感兴趣的:(ios开发,UITextField)