iPhone:UITextField结束编辑事件不会隐藏键盘

app*_*eak 3 iphone keyboard hide uitextfield uitextfielddelegate

我想在UITextField结束编辑事件中隐藏键盘,但不知怎的,我无法使代码工作!当我按下完成按钮时,它会隐藏键盘,但是当我没有按下完成按钮并移动到另一个UITextField我不需要键盘但是UIPickerView.基本上UIPickerView出现在键盘后面.我正在UITextField结束当前的结束编辑事件以及开始编辑所需的文本字段.如果我之前没有显示键盘,则开始编辑代码可以正常工作UITextField.有人可以告诉我,我做错了什么?

以下序列工作:

  1. 选择普通UITextField并插入文本,按完成按钮(这会隐藏键盘)
  2. 选择选择器UITextField(显示选择器视图)

..但是以下不是:

  1. 选择普通UITextField并插入文本
  2. 选择选择器UITextField(选择器视图位于键盘后面,因为我没有按下之前的完成按钮UITextField).这里它调用结束编辑,但它不会隐藏键盘!

    - (BOOL)textFieldShouldReturn:(UITextField *)textField {
        [textField resignFirstResponder];
        scrollView.contentSize = CGSizeMake(320, 750);
        [scrollView setFrame:CGRectMake(0, 0, 320, 480)];
        return YES;
     }
    
    -(void)textFieldDidEndEditing:(UITextField *)textField  
    {
        [textField resignFirstResponder];
    }
    
    - (void)textFieldDidBeginEditing:(UITextField *)textField {
        DatePicker.hidden = YES;
        CountryPickerView.hidden = YES;
    
        switch (textField.tag) {
            case 3:
                [textField resignFirstResponder];
                DatePicker.hidden = NO;
                return;
            case 6:
                [textField resignFirstResponder];
                CountryPickerView.hidden = NO;
                return;
            default:
                break;
        }
        scrollView.contentSize = CGSizeMake(320, 650);
        [scrollView setFrame:CGRectMake(0, 0, 320, 260)];
    }
    
    Run Code Online (Sandbox Code Playgroud)

val*_*exa 10

您不应该依赖标签,而是指向对象并[textField resignFirstResponder];从textFieldDidEndEditing中删除.

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    if (textField == theTextFieldIDontWantKeyboardFor) {  
        [thepreviousTextField resignFirstResponder]; 
        return NO;
    }
    return YES; 
}
Run Code Online (Sandbox Code Playgroud)


Cal*_*leb 7

它隐藏键盘但不是当我没有按完成按钮并移动到另一个uitextfield我不需要键盘而是PickerView.

处理此问题的正确方法是为inputView使用选择器而不是键盘的字段设置属性.根据需要配置选择器(设置委托,数据源等),然后将其设置为字段inputView.当您从一个字段移动到下一个字段时,系统将处理隐藏键盘并显示选择器视图,反之亦然.