【问题标题】:Handling 'Done' button on the keyboard outside of textViewDidEndEditing在 textViewDidEndEditing 之外处理键盘上的“完成”按钮
【发布时间】:2011-09-11 07:13:06
【问题描述】:

当按下“完成”时,我知道textViewDidEndEditing: 被调用。它有时也被其他操作调用。

我想要一个仅在按下“完成”时才调用的方法——完全是。我一直在阅读代码的 sn-ps,但没有看到有人这样做。顺便说一句,我没有使用任何 XIB 来显示我的观点。

这可能吗?

【问题讨论】:

标签: objective-c cocoa-touch ios keyboard


【解决方案1】:

首先,当用户点击 DONE 按钮时不会调用 textFieldDidEndEditing。 编辑后触摸任何东西都会调用它。

为了拥有一个独占按钮“完成”,您可以创建一个完成键作为 UIBarButtonItem,并编写一个类似的 IBAction

- (IBAction) doneClicked:(id)sender 

以下行将完成键指定为返回键。

textField.returnKeyType = UIReturnKeyDone;

您可以检查是否在 TextFieldDidEndEditing 中按下了 Done 键...您也可以使用另一个按钮,然后将其返回。

【讨论】:

  • 嗨莱戈拉斯,也许我的问题不清楚。我希望能够处理按下键盘上的完成按钮的事件。有什么方法可以在不使用 textViewDidEndEditing 的情况下捕获此事件?非常感谢,代码
  • @Legolas,你的第一句话是不正确的。触摸其他视图不会自动从当前正在编辑的文本字段中窃取第一响应者的状态——如果是这样,您将永远无法在键盘上输入任何内容。
【解决方案2】:

只要按下 Return 键,UITextField 的实例就会向其委托发送textFieldShouldReturn: 消息。如果您希望您的控制器接收此消息,请让它向文本字段发送 setDelegate: 消息,将 self 作为参数传递(或将文本字段的委托出口连接到 Interface Builder 中的控制器)并实现以下方法在您的控制器类中:

- (BOOL)textFieldShouldReturn:(UITextField *)textField;

有关详细信息,请参阅UITextFieldDelegate 协议的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-06
    • 2011-03-08
    • 2012-04-22
    • 1970-01-01
    • 2016-03-19
    • 2011-05-20
    • 1970-01-01
    • 2011-02-19
    相关资源
    最近更新 更多