swift - becomeFirstResponder 直到至少触摸任何 UITextField 一次才显示键盘
问题描述
最后可能的解决方案。
我正在开发一个UIViewController
与三个UITextField
。屏幕出现时打开键盘的功能连续工作了3年,然后在iOS 13之后就停止了。相同的脚本在 iOS 11 和 12 上仍然可以正常工作。
为了让它再次工作,我需要点击UITextField
应用程序中的任何(它不需要在同一屏幕上)。之后,UITextField
我的应用程序中的所有内容都在触发键盘。
不,我没有使用硬件键盘,这个问题也发生在真正的 iPhone X 上。
要打开键盘,我这样做:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
DispatchQueue.main.async { [weak self] in
self?.textField.perform(
#selector(self?.becomeFirstResponder),
with: nil,
afterDelay: 0.1)
}
}
我在多个设备上对其进行了很好的测试,还录制了一段视频,显示 iOS 12 和 iOS 13 并排运行相同的二进制文件,并且该功能在 iOS 13 上不起作用。
同样,只有当用户从不点击任何 UITextField
(或任何打开键盘的东西)时,它才不会打开键盘。单击此类组件后,键盘将再次开始打开。
该应用UIScene
在 iOS 13 上使用。这可能是问题所在吗?
这是 iOS 13 上的已知错误吗?我不知道如何解决这个问题。
我的设置:
- macOS 10.15.2
- Xcode 11.3
- 斯威夫特 5
问题的屏幕截图,相同的二进制文件,进入此屏幕的相同操作,不同的行为(UIViewController
后面的信息被手动隐藏):
可能的解决方案:
如果您Intercom
在项目中使用。只需Intercom.logout()
在 ViewController 启动时添加。在那之后,问题就消失了。
解决方案
推荐阅读
- reactjs - 如何更改 Material UI 抽屉的边框颜色?
- rust - 使用 Serde 进行序列化时,有没有办法对结构的字段进行分组,例如“flatten”属性的反转?
- python - xlwings 持久化 Python 对象
- javascript - 当它是一个单独的 .js 文件时,无法让 JavaScript 在 HTML 网页中工作
- c++ - 调用模板提供的(静态)函数
- python - 从几个文件中拆分相同值文本的好方法
- python - 警告:未找到 BLAS 库,Qiskit 安装
- html - 调整手风琴
- python - Matplotlib 注释/文本:如何分别为 facecolor 和 edgecolor 设置 alpha 透明度?
- android - Kotlin Room Coroutines Codelab 问题(初学者)