问题描述:
居住地用的textfield 控件显示,textfield 默认是可编辑的,当填写居住地信息时,想要的是显示这个地址选择器,但是默认会弹出键盘,并且还会遮挡住选择器。解决思路!
就是让textfield 设置不可编辑,但是要能响应点击事件,还要让已经打开的键盘关闭。
UITextFieldDelegate
//TextField是否可编辑
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if (textField.tag == 10) {
// 此处 self.view 是viewController 的view,关闭键盘
[self.view endEditing:YES];
[self AddressTF:textField]; //弹出地址选择器
return NO ;//当前 textField 不可编辑,可以响应点击事件
}else{
return YES;//可编辑
}
}
//地址选择器
- (void)AddressTF:(UITextField *) textField
{
}
顺便总结一下UITextField相关的代理和常规操作
有时打开搜索界面时,想一进入界面就弹出键盘输入
//使textField 成为第一响应者
[textField becomeFirstResponder];
//取消第一响应者
[textFiled resignFirstResponder];
return键类型 ,通常return回收键盘
textField.returnKeyType = UIReturnKeyJoin;
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
文本输入框开始输入时调用
- (void)textFieldDidBeginEditing:(UITextField *)textField{
//将键盘弹出
NSLog(@"开始输入");
}
文本输入框结束输入时调用
- (void)textFieldDidEndEditing:(UITextField *)textField{
//获取当前文本输入框中所输入的文字
NSLog(@"所输入的内容为:%@",textField.text);
//例:判断账号书写形式是否正确 如果不正确提示填写错误 重新输入
NSLog(@"结束输入");
}
文本输入框内容发生变化即会调用的方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
/*
NSLog(@"内容:%@",textField.text);//获取的是上一次所输入内容
NSLog(@"Location:%lu Length:%lu",range.location,range.length);//范围为当前文字的位置,长度为零
NSLog(@"==%@==",string);//实时获取当前输入的字符
*/
//需求 实时获取当前文本框中的所有文字
NSString * resultStr = [textField.text stringByAppendingString:string];
NSLog(@"%@",resultStr);
//可在该方法中判断所输入文字是否正确
return YES;
}
转载于:https://www.jianshu.com/p/7fb62c2bc940