无法在UITextField上获取DONE按钮

时间:2013-07-28 22:24:16

标签: objective-c uitextfield

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

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

    [textField resignFirstResponder];
    return YES;
}

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

1 个答案:

答案 0 :(得分: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;
}