我似乎无法通过键盘上的DONE按钮来关闭键盘?有谁知道如何使它工作?
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView{
[textView resignFirstResponder];
return YES;
}
答案 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;
}