Ionic / Cordova:无法以编程方式触发iOS键盘

时间:2016-12-06 16:02:15

标签: javascript ios cordova ionic-framework

我希望iOS和Android设备的键盘在1秒后自动打开,当特定的textarea可见时。

我创建了一个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上没有任何反应。

3 个答案:

答案 0 :(得分:0)

我认为你错过了添加ionic.Platform.isIOS()如何在你的指令内部进行条件化。

问候。

答案 1 :(得分:0)

您是否尝试在config.xml中添加此行?

<preference name="KeyboardDisplayRequiresUserAction" value="false" />

答案 2 :(得分:0)

您不需要其他插件即可触发键盘。只需将.focus()设置为您的输入字段,但要增加一小段延迟。对于iOS,您还需要将config选项添加到config.xml

 setTimeout(function(){ 
    $('#editfield').focus();
 },500);

添加到iOS的config.xml:

 <preference name="KeyboardDisplayRequiresUserAction" value="false" />

这适用于我的iOS和Android Apache Cordova应用程序。我今天编译的最新版本为2019年11月12日。