ios - iOS 编程:更详细地了解第一响应者
问题描述
我有一个带有文本字段和按钮的 iOS 项目。单击文本字段使其成为第一响应者并调用键盘。当我在那之后点击按钮时,键盘仍然在屏幕上,文本字段仍然是第一个响应者。很自然的想法,点击按钮应该让它成为第一响应者并强制提交的文本退出,但是为什么这个过程在 Xcode 中没有发生呢?如果我的应用程序有 2 个按钮 A 和 B,单击 A 会使其成为第一响应者吗?然后点击 B 之后会让 B 成为第一响应者并且 A 会辞职吗?
解决方案
如果您来自其他环境 - 例如桌面浏览器上的网页 - 您可以从一个元素“标签”到另一个元素,为每个元素赋予“焦点”。
在 iOS 中,UI 元素没有这样的“焦点”状态。
例如,如果您点击 aUITextField
或UITextView
,该对象将变为firstResponder
并且因为它接受键盘输入,所以会显示键盘。默认情况下,AUIButton
没有启用,也不接受键盘输入。canBecomeFirstResponder
这就是为什么点击按钮不会关闭键盘 - 或“将焦点从文本字段中移开”。
您可以子类UIButton
化以赋予它这些属性,或者如另一个答案所示,添加代码以告诉文本字段resignFirstResponder
,但这不是默认行为。
推荐阅读
- spring-boot - 如何在 webflux 中调试?
- javascript - 遍历表并将值存储为键/值对
- c# - 在不使用 (Table-Valued-Parameter) 类型的情况下将集合作为 SQL 参数添加到 SqlCommand
- ag-grid - 如何禁用 ag-grid 的右键单击/上下文菜单?
- azure - Azure 文本转语音服务返回 401 Unauthorized
- node.js - dynamo db 从内部数组中获取数据
- regex - 用正则表达式替换数组宏
- sas - SAS中只输出ROC曲线
- css - 如何设置 XML 驱动的 URL 的样式
- ruby - 如何向 Edge/IE WebDriver 传递/创建虚假媒体流?