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

Posted

技术标签:

【中文标题】UIKeyboard 返回按钮操作不同于 UITextView resignFirstResponder【英文标题】:UIKeyboard return button action different from UITextView resignFirstResponder 【发布时间】:2011-07-14 13:40:24 【问题描述】:

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

[textView becomeFirstResponder];

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

[textView resignFirstResponder];

我想知道是否可以连接 UIKeyboard 的返回键来执行某些操作,但也可以自行关闭它。 Action是保存一些添加到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。

提前致谢!

【问题讨论】:

你在顶部交替使用 textView 和 textField,我看到更多 textView 的引用,是我们指的吗? @GradyPlayer 抱歉,是的,我的意思是 UITextView。 【参考方案1】:

对于 UITextView 你需要实现 UITextViewDelegate 并使用方法:

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

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

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

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

- (BOOL)textFieldShouldReturn:(UITextField *)textField

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

UITextField 也应该自动启用 Return 键。

【讨论】:

以上是关于UIKeyboard 返回按钮操作不同于 UITextView resignFirstResponder的主要内容,如果未能解决你的问题,请参考以下文章

UIButton iOS 7 跟随 UIKeyboard 动画

iOS7中的UIKeyboard

返回按钮~等同于IE后退效果

如何创建一个行为类似于 UIKeyboard(数字键盘)的 UIButton 矩阵?

为啥从自定义单元格调用时 UIkeyboard 不动画?

Instagram 如何将 UIKeyboard returnKey 自定义为“@”和“#”?