无法在UITextField上获取DONE按钮

jdo*_*dog 2 objective-c uitextfield

我似乎无法通过键盘上的DONE按钮来关闭键盘?有谁知道如何使它工作?

- (BOOL)textFieldShouldReturn:(UITextField *)textField {

    [textField resignFirstResponder];
    return YES;
}

- (BOOL)textViewShouldEndEditing:(UITextView *)textView{
    [textView resignFirstResponder];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 5

您的代码,特别是辞退文本字段的第一响应者-textFieldShouldReturn是好的.

我想你可能没有正确地解决问题,可能忘记设置你的代表UITextField.

来自我最近的一个项目的片段,我使用了Next返回键和两个字段的Done返回键,从第一个切换到第二个,并解除第二个(具有Done返回键):

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];

    if(textField == self.nameTextField)
        [self.descriptionTextField becomeFirstResponder];

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

关于UITextView(您的问题UITextField在标题中特别提及,但您的代码同时包含textfield和textview),您需要以不同方式辞职第一响应者.

由于文本视图用于包含多行的较长文本输入,您还可以使用返回键进行换行,因此您必须检测用户何时更改文本.如果他们尝试输入换行符,则在该点手动辞职.示例如下:

- (BOOL)textView:(UITextView *)textView 
        shouldChangeTextInRange:(NSRange)range 
        replacementText:(NSString *)text
{
    if([text isEqualToString:@"\n"])
         [textView resignFirstResponder];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)