【问题标题】:IONIC Keyboard hide on input focusIONIC 键盘隐藏在输入焦点上
【发布时间】:2015-05-28 06:55:05
【问题描述】:

我正在编写一个 Ionic 应用程序,该应用程序将用于医疗保健部门的物流。
将用于此应用程序的设备具有内置的条形码扫描仪并在 android 4.1.1 上运行。
该扫描仪在输入字段中输入数据并通过按“输入”键提交。由于在某些情况下扫描仪是我的“键盘”,我想在输入焦点或单击时隐藏键盘。

我使用离子键盘cordova插件编写了以下指令:

directives.directive("showKeyboard", [
function()  {
    var linkFn = function(scope, element, attrs) {
        console.log(scope);
        console.log(element);
        console.log(attrs);
        if(!window.cordova || !window.cordova.plugins.Keyboard) return; // Check for cordova keyboard plugin

        if(element[0].nodeName.toLowerCase() != 'input') return; // check for input

        if(attrs.type.toLowerCase() != 'password' && attrs.type.toLowerCase() != 'text') return; // check for type of input

        element.bind("focus click",
            function(e) {
                e.preventDefault();
                if(scope.$eval(attrs.showKeyboard)){
                    console.log('show')
                    window.cordova.plugins.Keyboard.show();
                }
                else    {
                    console.log('hide');
                    cordova.plugins.Keyboard.close();

                }
            }
        );
    };

    var keyboardDirective = {
        restrict : 'A',
        link: linkFn
    };

    return keyboardDirective;

}
]);  

功能似乎起作用了。只有键盘不会关闭,并且似乎是被设备“强制”打开的。

有什么建议吗?

【问题讨论】:

标签: javascript android cordova ionic-framework ionic


【解决方案1】:

我尝试使用您的指令来抑制默认的本机键盘以显示替代键盘,并发现我必须在调用 hide 之前使用 100 毫秒的 $timout 才能关闭键盘(以解决竞争条件)。但是,它会产生闪烁伪影,因此它不是最佳解决方案。我还没有尝试过的另一个想法是通过一个自定义插件在 Java 中抑制他们在 Android 端的键盘,该插件会调用,

InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);

【讨论】:

    猜你喜欢
    • 2017-02-16
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 2017-02-12
    • 2017-11-07
    相关资源
    最近更新 更多