UITextView textviewshouldendediting永远不会被调用

我有这样的UITextView设置:

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(10, 40, 280, 240)]; [textView setBackgroundColor:[UIColor greenColor]]; [textView setFont:[UIFont fontWithName:@"MyriadPro-Regular" size:13]]; [textView setTextColor:[UIColor blackColor]]; [textView setText:@"Your Message...."]; [textView setBackgroundColor:[UIColor clearColor]]; [textView setDelegate:self]; [textView setReturnKeyType:UIReturnKeyDone]; 

我期待,当用户按下键盘上的“完成”button,这个方法将被调用(我已经实现):

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

但这种方法永远不会被调用..我做错了什么? 谢谢。

在设置返回键types时,它不会改变文本视图的行为。 在Return ,它将在文本视图中添加一个换行符。 所以,如果你不希望你的文本视图是多行的,你可以捕获\nresignFirstResponder

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

在旁注中, textViewShouldEndEditing:在您退出第一个响应者状态后被调用。

如果要在文本视图中保留换行符,则应考虑使用文本视图的inputAccessoryView 。 这是一个例子。