2

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

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

    [textField resignFirstResponder];
    return YES;
}

- (BOOL)textViewShouldEndEditing:(UITextView *)textView{
    [textView resignFirstResponder];
    return YES;
}
4

1 回答 1

5

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

我认为您可能没有正确连接,可能忘记设置您的UITextField.

我最近的一个项目的一个片段,我在两个字段中使用了 Next 返回键和 Done 返回键,从第一个切换到第二个,然后关闭第二个(它有一个 Done 返回键):

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

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

    return YES;
}

关于UITextView(您的问题在标题中特别提到UITextField,但您的代码同时具有 textfield 和 textview),您将需要以不同的方式辞去第一响应者的职务。

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

- (BOOL)textView:(UITextView *)textView 
        shouldChangeTextInRange:(NSRange)range 
        replacementText:(NSString *)text
{
    if([text isEqualToString:@"\n"])
         [textView resignFirstResponder];
    return YES;
}
于 2013-07-28T22:37:29.193 回答