DismissSoftInput () для панели поиска для Nativescript-Vue - PullRequest
0 голосов
/ 01 июля 2019

Объясняя проблему:

Панель поиска не имеет возможности отклонить открытую клавиатуру. Это делает панель поиска довольно непригодна, так как обычный пользовательский шаблон является то, что пользователь что-то ищет, а затем нажимает элемент и перемещается там. На Android (по крайней мере на> = 5.x) открытая клавиатура будет продолжайте оставаться открытым даже на новой странице.

Ссылаясь на вопрос по Github , любой, как это сделать для Nativescript-Vue, а не для Nativescript с Typescript

Изменено:

Добавлена ​​игровая площадка: https://play.nativescript.org/?template=play-vue&id=hrrcW9

Если я сверну приложение и снова нажму на него, клавиатура снова откроется.

1 Ответ

1 голос
/ 01 июля 2019

Как вы уже могли видеть в связанном выпуске, запрос функции закрывается после завершения. 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();
    }
}

Пример игровой площадки

...