禁用Ionic上的本地键盘

4

显然,像这个解决方案在Android 5.1.*上不如预期工作(键盘闪烁(快速打开并关闭))。

.directive('disableKeyboard', function ($timeout, $window) {
    var linker = function (scope, element, attrs) {

        if (!$window.cordova || !$window.cordova.plugins.Keyboard) {
            return;
        }

        element.bind('focus click',
            function (e) {
                e.preventDefault();
                $timeout($window.cordova.plugins.Keyboard.close, 0);
            }
        );
    };

    return {
        restrict: 'A',
        link: linker,
    }
})

Ionic 论坛并没有提供实质性的解决方案。有什么建议吗? 请注意:我不想使用 cordova.plugins.Keyboard.close。谢谢。


你想要的确切行为是什么?比如输入字段是什么?你想如何向该字段添加数据等等?也许分享模板方面会帮助我们为您提供解决方法。 - Mudasser Ajaz
预期行为 - 在某些页面上禁用原生键盘(即在焦点 / 点击事件上保持关闭)。 - Vidul
尝试只向这些输入元素添加“disabled”属性。 - Mudasser Ajaz
@mudasserajaz 很棒,这个可行!请把评论发布为答案。 - Vidul
我已经添加了我的答案 :) - Mudasser Ajaz
3个回答

4

在您的输入标签中添加disabled属性,例如

<input type="text" name="lname" disabled>

注意: 这可能会更改输入标签的背景颜色,但是您可以使用CSS进行更改。


这是解决方案。 - Vidul

1
我知道我来晚了,但是我开发了这个库来实现这一点:https://www.npmjs.com/package/ionic-no-keyboard。它没有闪烁,可以完美地禁用原生键盘。只需在输入框中添加no-keyboard标签即可禁用原生键盘。

1

更新于2022年1月22日:

在阅读这里的Virtual Keyboard API文档https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/VirtualKeyboardPolicy/explainer.md时,我注意到它提到了一个可以用来改变虚拟键盘布局类型(数字、电话、数字等)的inputmode属性。

在这份文件中,他们提到可以使用值为none来隐藏虚拟键盘,在MDN文档中查找该属性后,确实,none值的意思是当页面(在这种情况下是移动应用程序)实现自己的键盘时使用:https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode#values enter image description here 与其他解决方案不同的是,此属性将保留对input元素的焦点,并仍允许用户执行多选和上下文菜单操作(即复制/粘贴、全选等)。
此属性可用于输入:
<input inputmode="none">

此外,任何通过contenteditable属性进行编辑的元素也可以这样做:

<div inputmode="none" contenteditable />

我在iOS(XCode)和Android(Android Studio)模拟器/模拟器上测试了这个功能,并且在两者上都可以工作!

原始答案2022年1月15日:

幸运的是,似乎正在开发一个名为Virtual Keyboard API的新Web API。

我不会详细介绍新API本身,因为我已经在另一个Stack Overflow答案中这样做了。

新API引入了一个新属性,称为virtualKeyboardPolicy,可以设置为automanual

当设置为manual时,虚拟键盘不会input元素聚焦时自动显示,但与其他解决方案不同,input 将保持聚焦状态,并允许用户执行多字符选择、复制/粘贴等操作。

该功能在Chromium v94中发布(于2021年9月21日发布),因此我在几个基于Chromium的浏览器上进行了一些测试,看起来新属性已经可以使用!
<input
  virtualkeyboardpolicy="auto"
  value="Auto Virtual Keyboard"
>

enter image description here enter image description here

请注意,以下图像中虚拟键盘已隐藏!
<input
  virtualkeyboardpolicy="manual"
  value="Manual Virtual Keyboard"
>

enter image description here enter image description here

我的希望是,虚拟键盘API最终能够被实现在Ionic用于在本地设备上运行的Web视图中,这将使我们能够在移动应用程序中使用它!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接