Реагируйте на родной Android - клавиатура Samsung сохраняет прежнее значение - PullRequest
0 голосов
/ 13 мая 2019

У меня есть TextInput:

<TextInput value={this.state.text} onChangeText={text => this.setState({text})} />

Пользователь что-то печатает, затем нажимает кнопку:

<Button onPress={this.myCallBack} />

Обратный вызов в основном использует this.state.text, чтобы добавить его в список элементов, отображаемых за пределами TextInput, а затем сбрасывает this.state.text:

    myCallBack = () => {
         // something using this.state.text
         // ...
         this.setState({ text: null });
    }

Отлично работает со всеми протестированными клавиатурами, кроме клавиатуры Samsung. Вот что происходит:

  • Я набираю 'foo';
  • Я нажимаю кнопку;
  • TextInput становится пустым - как и ожидалось;
  • Затем я набираю 'bar' и получаю 'foobar'. Клавиатура Samsung сохраняет прежнее значение, похоже, что оно на самом деле не привязано к this.state.text. Примечание: во время этого сценария фокус всегда остается на TextInput.

Я пытался добавить атрибуты autoComplete ="off" и autoCorrect={false}. Это работает, но я хочу сохранить автозаполнение, поэтому я не хочу использовать эти решения. Я также хочу сосредоточиться на TextInput, чтобы пользователь мог быстро добавлять множество элементов, не пропуская при этом вновь появляющуюся клавиатуру.

Я также связал атрибут myCallBack с onSubmitEditing, и он отлично работает с клавиатурой Samsung. Но я хочу, чтобы пользователь также мог использовать кнопку.

У кого-нибудь были подобные проблемы раньше? Как ты решил это?

...