我在UITextView 类参考中没有看到任何说明当您按下 Return 时它会自动隐藏键盘的内容。
此外,协议中没有textViewShouldReturn:
消息。协议中有一条消息,但文本视图不是文本字段。UITextViewDelegate
textFieldShouldReturn:
UITextFieldDelegate
如果你想让它在用户按下 Return 时隐藏键盘,你需要做两件事。
首先,您需要将一些对象(通常是您的视图控制器)连接到文本视图的delegate
出口。您可以在您的 nib 中执行此操作,或者您可以在代码中执行此操作,也许在您的viewDidLoad
方法中:
- (void)viewDidLoad {
[super viewDidLoad];
myTextView.delegate = self;
}
其次,您需要textView:shouldChangeTextInRange:replacementText:
在委托对象中实现:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
} else {
return YES;
}
}
请注意,如果用户粘贴包含换行符和其他字符的文本,则不会捕获换行符。它只会在用户点击 Return 键或粘贴仅包含换行符的文本时注意到。
您可以将委托的类声明为符合UITextViewDelegate
协议,在这种情况下,Xcode 将有助于自动完成方法名称。但即使该类不符合协议,它也会起作用。