macOS运行的Cordova iOS应用:输入框异常灰色栏问题求助
Cordova iOS应用编译到macOS运行时虚拟键盘异常问题
将Cordova iOS应用编译到macOS平台运行时出现异常:当光标进入输入框时,应用尝试唤起虚拟键盘,却仅显示一条遮挡底部菜单的不透明灰色栏。
无输入焦点时的界面:
光标进入输入框后,屏幕底部升起灰色栏:
Xcode抛出错误日志:
2023-07-30 11:10:05.834129+0200 I-Ching[36626:1668765] [RTILog]
-[RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] Can only perform
input operation for an active session. sessionID =
2C255827-6219-472F-A781-44017AE0F4BC
经排查排除自身代码(如Bootstrap导航栏)问题,推测为iPad虚拟键盘唤起逻辑在macOS Catalyst环境下异常,以下是排查修复建议:
- 升级Cordova iOS平台版本:确保使用支持macOS Catalyst的Cordova iOS版本,执行命令更新:
cordova platform update ios - 配置Info.plist禁用虚拟键盘适配:在项目的
Info.plist中添加以下配置,强制macOS使用物理键盘:<key>UIApplicationSupportsIndirectInputEvents</key> <false/> <key>UIRequiresPersistentKeyboard</key> <false/> - 修改Cordova WebView偏好设置:在
config.xml中添加键盘相关配置,调整WebView的键盘行为:<preference name="KeyboardDisplayRequiresUserAction" value="false" /> <preference name="DisallowOverscroll" value="true" /> <preference name="KeyboardResize" value="false" /> - 调试输入事件逻辑:使用Safari开发者工具连接macOS应用,监听输入框的
focus事件,若存在异常可尝试重置焦点触发:document.querySelectorAll('input, textarea').forEach(el => { el.addEventListener('focus', () => { el.blur(); setTimeout(() => el.focus(), 100); }); }); - 重置Cordova项目配置:若以上方案无效,移除并重新添加iOS平台:
cordova platform remove ios cordova platform add ios@latest - 检查macOS系统设置:进入系统偏好设置-键盘,关闭“自动显示和隐藏菜单栏”,避免界面布局冲突影响键盘唤起逻辑。
内容的提问来源于stack exchange,提问作者brianfit
相关产品推荐
相关产品推荐

