正如预期的那样,当选择 TextInput 时,它会获得焦点并且我可以输入文本。快捷方式栏出现在屏幕底部。如果我随后选择另一个文本字段,它会被短暂选择并在短时间内失去焦点。
该应用程序自 2022 年 9 月以来一直在 Appstore 中运行。旧的工作版本在 macOS 10.15 Catalina 上使用 xcode 编译。由于 App Store Connect 不再支持旧的 xcode 版本,因此我切换到 Xcode 14.3.1 和 macOS Ventura。我还尝试过 Xcode 版本 15 beta 和 Xcode 14。Kivy 2.0.0dev 和 Kivy 2.2.1。 1:1复制项目文件并从头开始创建一个新的项目文件并重新安装kivy-ios。同样的问题。
我可以排除:
当我在文本字段之间快速来回切换时,我从 xcode 收到消息:
[Assert] UIFocusItem: <<_UIRemoteKeyboardPlaceholderView: 0x105d18e90; frame = (0 0; 1024 0); layer = <CALayer: 0x28207cba0>>; size={1024, 0}> with parentFocusEnvironment: <UICompatibilityInputViewController: 0x1113d3600> focusItemContainer: (null) has no coordinate space.
但我认为问题出在其他地方。
现在变得有趣了: 如果我在 iPad 中的常规 -> 键盘 -> 快捷方式关闭和建议关闭下关闭快捷方式栏,那么我根本无法选择任何文本输入。每个选定的 TextInput 立即失去焦点。您可以看到光标短暂闪烁。
带虚拟键盘:
如果我切换到下一个 TextInput,则方法 _check_keyboard_shown() 会被调用四次。接下来是 _upd_kbd_height() 和 update_viewport()。焦点依然存在。
带硬件键盘(仅快捷栏):
如果我切换到下一个 TextInput,则方法 _check_keyboard_shown() 会被调用七次。紧随其后的是
if not self._win.is_keyboard_shown():
self._sdl_keyboard.release()
self._sdl_keyboard.release()
在哪里以及如何定义?我根本找不到kivy中的代码。 self._win.is_keyboard_shown()
到底是什么?但在那之后的某个时刻(我不知道如何)调用 _keyboard_released() 并且新的 TextInput 失去焦点。经过一番解绑、释放、get_keyboard、check_keyboard最后连续执行了两次_upd_kbd_height()和update_viewport()。我不知道为什么是两次。
在我看来,快捷栏就像键盘一样。例如。使用
Window.softinput_mode = "pan"
整个布局会随着栏向上移动。仅当切换到另一个 TextInput 时,快捷栏不会像虚拟键盘一样重新出现。