Как автоматически отображать клавиатуру при загрузке страницы - PullRequest
1 голос
/ 31 октября 2019

Я создаю мобильное приложение с помощью NativeScript-Vue. У меня есть TextField на странице, и я хочу, чтобы клавиатура автоматически отображалась при загрузке страницы / экрана, вместо того, чтобы нажимать на TextField.

Я назначил для моего TextField ссылку 'textFieldId' и имеюнаписал функцию, которая должна нацеливаться на это TextField и фокусировать его. Я поместил эту функцию в раздел методов компонента и вызвал ее в подключенном хуке ().

Клавиатура не отображается при загрузке страницы, и я не уверен, должна ли она быть в другом хуке? Я сделал консольный журнал TextField, на который нацеливаюсь, и он определенно нацелен на него. Я также установил функцию для запуска по событию касания другого элемента на странице, и клавиатура отображается, как и ожидалось.

Я запускаю приложение в эмуляторе Android, но также проверил на своем iPhone с помощьюПредварительный просмотр команды tns, и проблема остается той же - поэтому я не верю, что это проблема, связанная с устройством.

<script>
    export default {
        mounted() {
            console.log('mounted')
            showKeyboard()
        },
        methods: {
            showKeyboard () {
                this.$refs.textFieldId.nativeView.focus()
        }
    }
</script>

И TextField

<TextField
    hint="Type here"
    class="input type-text"
    ref="textFieldId"/>

Клавиатура нене отображается при загрузке страницы - отображается только при нажатии на текстовое поле. Я бы хотел, чтобы он отображался автоматически без какого-либо ввода пользователя.

1 Ответ

0 голосов
/ 05 ноября 2019

ответил здесь . В любом случае, вот что я сделал на NativeScript-Vue:

<template>
    <TextField @loaded="showKeyboard" />
</template>

<script>
import * as utils from "tns-core-modules/utils/utils";

export default {
    methods: {
        showKeyboard({ object }) {
            if (object.android) {
                setTimeout(() => {
                    object.focus();
                    utils.ad.showSoftInput(object);
                }, 10);
            } else {
                object.focus();
            }
        }
    }
}
</script>
...