Ionic/Cordova:无法以编程方式触发 iOS 键盘
Posted
技术标签:
【中文标题】Ionic/Cordova:无法以编程方式触发 iOS 键盘【英文标题】:Ionic/Cordova: Can't trigger the iOS keyboard programmatically 【发布时间】:2016-12-06 16:02:15 【问题描述】:我希望 ios 和 android 设备的键盘在 1 秒后在特定文本区域可见时自动打开。
我创建了一个directive
,但是iOS 上的键盘没有出现! iOS 10 的键盘是否存在(新)问题?
我的textarea
看起来像:
<textarea rows="20" autocorrect="off" ng-trim="false" focus-me></textarea>
指令看起来像:
app.directive('focusMe', function($timeout)
return
link: function (scope, element, attrs)
$timeout(function ()
element[0].focus();
if (window.cordova.plugins.Keyboard && ionic.Platform.isAndroid())
window.cordova.plugins.Keyboard.show(); //open keyboard manually on android
, 1000);
;
);
在 Android 和浏览器中一切正常,但在 iOS 上没有反应。
【问题讨论】:
【参考方案1】:我认为您缺少在指令中添加 ionic.Platform.isIOS()
如何设置条件。
您好。
【讨论】:
谢谢。但是 iOS 不需要window.cordova.plugins.Keyboard.show()
语句。如果我为 iOS 调用这个函数,Xcode 会警告 element.focus()
就足够了。
有人在 PJSIP 上工作吗?从上个月开始我就坚持了这一点
你试试native.keyboardshow
。在这里您可以找到更多相关信息:link【参考方案2】:
您是否尝试在 config.xml 中添加此行?
<preference name="KeyboardDisplayRequiresUserAction" value="false" />
【讨论】:
是的,我已经添加了这一行,但它也不起作用。 这是有效的答案。将焦点设置在输入字段上。有时短暂的延迟会有所帮助。像这样: setTimeout(function()$('#toeditfield').focus();,500);【参考方案3】:您不需要额外的插件来触发键盘。只需将 .focus() 设置为您的输入字段,但会添加一个短暂的延迟。对于 iOS,您还需要将配置选项添加到 config.xml
setTimeout(function()
$('#editfield').focus();
,500);
添加到 iOS 的 config.xml:
<preference name="KeyboardDisplayRequiresUserAction" value="false" />
这适用于我的 iOS 和 Android apache cordova 应用程序。我今天使用 2019 年 11 月 12 日的最新版本进行编译。
【讨论】:
以上是关于Ionic/Cordova:无法以编程方式触发 iOS 键盘的主要内容,如果未能解决你的问题,请参考以下文章
无法从 Objective C 插件返回到 Ionic/Cordova 应用程序时出错
VS2017 - Ionic/Cordova - 无法构建 iOS RemoteBuild - 路径太长