iOS Textfield 键盘与弹出框的控制

8436312-946ca757eea25ffb.png
Simulator Screen Shot - iPhone 8 - 2019-06-01 at 16.02.02.png

问题描述:

居住地用的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

猜你喜欢

转载自blog.csdn.net/weixin_34183910/article/details/91101126