对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; }