UIKeyboard返回按钮操作与UITextView resignFirstResponder不同

时间:2011-07-14 13:40:24

标签: objective-c uitextview uikeyboard

我有一个UITextView供用户输入som文本。当使用:

调用UITextView时
[textView becomeFirstResponder];

我添加了一个rightBarButtonItem,它允许用户通过以下方式解雇UIKeyboard:

[textView resignFirstResponder];

我想知道我是否可以连接UIKeyboard的返回键来执行某些操作,但也可以自行解除它。动作是保存添加到textView的一些数据。

那么如何实现动作,其中既调用resignFirstResponder又执行不同的操作。

这是我使用的代码。

-(void)viewDidLoad {
  self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] 
    initWithTitle:@"Cancel"
    style:UIBarButtonItemStyleBordered
    target:self action:@selector(cancelEditing)] autorelease];
}
- (void)textViewDidEndEditing:(UITextView *)textview {
    [self saveSomeData];
}

- (void)cancelEditing {
    [commentTextView resignFirstResponder]; 
}

我可以理解resignFirstResponder在两种情况下都会调用textViewDidEndEditing。

提前致谢!

1 个答案:

答案 0 :(得分:2)

对于UITextView,您需要实现UITextViewDelegate并使用该方法:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

检查文本参数,如果它等于“\ n”,则可以关闭键盘。

编辑:正在讨论TextView,请保留以下内容以防万一。

将您的控制器设置为UITextField的委托。然后执行:

- (BOOL)textFieldShouldReturn:(UITextField *)textField

在这种方法中,您可以辞职第一响应者。

UITextField也应该自动启用Return键。