iOS编程:更了解急救人员

问题描述 投票:0回答:2

我有一个带有文本字段和按钮的iOS项目。单击文本字段使其成为第一响应者,然后调用键盘。然后,当我单击按钮时,键盘仍在屏幕上,并且文本字段仍然是第一响应者。自然的想法,单击按钮应该使它成为第一响应者,并迫使文本提交辞职,但是为什么在Xcode中不会发生此过程?如果我的应用程序有两个按钮A和B,将单击A使其成为第一响应者吗?然后在使B成为第一响应者之后单击B,A将会辞职吗?

ios uitextfield first-responder
2个回答
0
投票

第一响应者是当前准备对操作做出响应的控件。

在UIKit中,这通常是已激活键盘并正在接收输入的控件。如果您希望该文本控件停止等待输入(然后关闭键盘),则应调用其resignFirstResponder()方法,该方法将第一个响应程序警棍传递给下一个等待的组件。

根据您的情况,如果您想关闭键盘,则可以做两件事:

  1. 您可以调用文本字段的resignFirstResponder()
  2. 在按钮的IBAction中,您可以编写self.view.endEditing(true),它将为您关闭键盘。

如果有任何疑问,请发表评论。

乐于助人!


0
投票

[如果您来自其他环境,例如桌面浏览器上的网页,则可以在元素之间“制表”,为每个元素指定“焦点”。

在iOS中,UI元素没有这种“焦点”状态。

例如,如果您敲击UITextFieldUITextView,则该对象成为firstResponder,并且由于它接受键盘输入,因此将显示键盘。默认情况下,UIButton确实not启用了canBecomeFirstResponder,并且不接受键盘输入。

这就是为什么点击按钮不会关闭键盘-或从文本字段“夺走焦点”的原因。

可以UIButton子类赋予这些属性,或者,如另一个答案所示,添加代码以将文本字段告知resignFirstResponder,但这不是默认行为。

© www.soinside.com 2019 - 2024. All rights reserved.