因为在项目中经常会有点击文本框弹出选择框 或者文本框中有数据就清空文本框等之类的场景这时就要用到UITextField的代理事件
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
[textField resignFirstResponder]
return YES;
}
这个方法返回NO的话文本框就会禁止编辑 可以在这个方法了写点击跳转页面之类的事件 键盘收起等事件
UITextField一键清除需设置clearButtonMode就可以了
clearButtonMode的三个属性:
UITextFieldViewModeNever, 清空按钮永不出现
UITextFieldViewModeUnlessEditing, 不编辑的时候出现
UITextFieldViewModeAlways 只要输入框有内容就出现
textField.clearButtonMode=UITextFieldViewModeAlways;
//这个是点击清除按钮时调用的方法返回YES 清除返回NO不清除
- (BOOL)textFieldShouldClear:(UITextField *)textField{
return YES;
}
//这个属性设置后会在文本框在次编辑是清空
textField.clearsOnBeginEditing=YES;
//当textField设置了secureTextEntry属性后clearsOnBeginEditing这个属性会失效要想保留原来的效果可以使用一下代理方法
-(void)textFieldDidBeginEditing:(UITextField *)textField{
//文本框开始编辑时调用
_countInput.text=nil;
}
//文本框结束编辑时调用
-(void)textFieldDidEndEditing:(UITextField *)textField{
}
//返回YES允许编辑停止并放弃第一响应者状态。NO允许结束编辑会话
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{
return YES;
}
实时的获取文本框输入的值
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *text = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSLog(@"文本框实时内容%@",text);
return YES;
}
//当返回是YES时键盘输入123 择打印出来 1,12,123 返回是NO时 打印出 1,2,3
对于这种方法 我看到有人说在iOS7上中文输入获取到的拼音 我用到是iPad 系统是NSString* phoneVersion = [[UIDevice currentDevice] systemVersion]; NSLog(@“手机系统版本: %@”, phoneVersion);
没有出现这种情况 暂时不知道原因 如果出现这种情况 可以使用一下方法
//给textField添加事件或者通知都一样 结果都一样
[textField addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];
//输入中文的话这个方法会调用两次用一下方式解决
- (void)textFieldChanged:(UITextField *)textField {
UITextRange *selectedRange = textField.markedTextRange;
if (selectedRange == nil || selectedRange.empty) {
NSLog(@"文本框实时内容%@", textField.text);
}
}
//使用通知在在viewDidLoad初始化通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldChanged:) name:UITextFieldTextDidChangeNotification object:self.textField];
文本框禁止编辑
//设置textField.enable = NO,属性或者
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
return NO;
}
点击键盘换行时调用
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
//返回NO就表示不处理
return YES;
}