【问题标题】:Ionic/Cordova: Can't trigger the iOS keyboard programmaticallyIonic/Cordova:无法以编程方式触发 iOS 键盘
【发布时间】: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 上没有反应。

【问题讨论】:

    标签: javascript ios cordova ionic-framework


    【解决方案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 日的最新版本进行编译。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      • 2020-07-07
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多