首页 > 解决方案 > iOS 编程:更详细地了解第一响应者

问题描述

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

标签: iosuitextfieldfirst-responder

解决方案


如果您来自其他环境 - 例如桌面浏览器上的网页 - 您可以从一个元素“标签”到另一个元素,为每个元素赋予“焦点”。

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

例如,如果您点击 aUITextFieldUITextView,该对象将变为firstResponder并且因为它接受键盘输入,所以会显示键盘。默认情况下,AUIButton没有启用,也不接受键盘输入canBecomeFirstResponder

这就是为什么点击按钮不会关闭键盘 - 或“将焦点从文本字段中移开”。

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


推荐阅读