DismissSoftInput()用于Nativescript-Vue的搜索栏

时间:2019-07-01 16:13:20

标签: nativescript nativescript-vue

解释问题:

  

搜索栏无法关闭打开的键盘。这使得   搜索栏非常不可用,因为普通用户模式是   用户搜索某些内容,然后按该项目并进行导航   那里。在Android上(至少在> = 5.x上),打开的键盘将   继续保持打开状态,即使在新页面上也是如此。

请参阅Github上的问题,任何人如何针对Nativescript-Vue而不是针对带有Typescript的Nativescript做到这一点

已更新:

添加了游乐场:https://play.nativescript.org/?template=play-vue&id=hrrcW9

如果我最小化该应用程序,然后再次单击它,则键盘会再次弹开。

1 个答案:

答案 0 :(得分:1)

正如您在链接的问题中已经看到的那样,功能请求已关闭,已完成。 dismissSoftInput()是SearchBar上的一种方法,现在可以隐藏键盘。

如果仍然有问题,请共享您的代码。

更新

这是Android的默认行为,即将第一个可聚焦元素集中在片段/活动上。添加事件侦听器/超时以从每个屏幕上移开焦点可能会很烦人,我更喜欢将自动聚焦视图用作布局的第一个元素(这不会对屏幕设计产生任何影响),这样会阻止自动聚焦在文本上字段/搜索栏。

import { View } from "tns-core-modules/ui/core/view";

export class AutoFocusView extends View {

    createNativeView() {
        if (typeof android !== "undefined") {
            const linearLayout = new android.widget.LinearLayout(this._context);
            linearLayout.setFocusableInTouchMode(true);
            linearLayout.setFocusable(true);
            return linearLayout;
        } 
        return super.createNativeView();
    }

    onLoaded() {
        super.onLoaded();
        this.requestFocus();
    }

    requestFocus() {
        const nativeViewProtected = this.nativeViewProtected;
        nativeViewProtected.requestFocus();
    }
}

Playground Sample