【问题标题】:iPhone: why does sending the message resignFirstResponder remove the keyboard?iPhone:为什么发送消息 resignFirstResponder 会删除键盘?
【发布时间】:2011-01-07 11:33:57
【问题描述】:
这是一个两部分的问题:
1) 为什么我们首先需要让 UITextField 成为第一响应者?即使它不是第一响应者,它也会起作用。
2) 为什么当我们发送消息 resignFirstResponder 时键盘会消失?该方法是否还会将键盘作为副作用删除?为什么 UITextView 中没有单独的方法来指示它移除键盘?
【问题讨论】:
标签:
iphone
objective-c
ios
uitextfield
first-responder
【解决方案1】:
Why do you want the resignFirstResponder message not to remove the keyboard?
-
只有当您发送 becomeFirstResponder 消息或在文本字段内单击时,UITextField 才会变为活动状态(光标在文本字段内闪烁并出现键盘)。
-
resignFirstResponder 消息使文本字段处于非活动状态(光标从文本字段中移除)。如果光标不在文本字段中,那么为什么还需要键盘呢?您会将在键盘上键入的文本发送到哪里?这就是为什么当文本字段辞去第一响应者时键盘会自动消失的原因。
resignFirstResponder 是 UITextView 中指示它移除键盘的方法。
【解决方案2】:
您也可以将 resignFirstResponder 发送到 TextView,但实际上您可能想问的是 textview 没有委托方法,例如 textfield 存在的委托方法,即 textFieldShouldReturn。
所以回答你的问题,因为 textview 是多行的,按回车键会将光标带到下一行。您需要将完成按钮显式放置在键盘上方的单独视图中,按下它您可以将 resignFirstResponder 消息发送到 textview。