У меня есть 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. Но я хочу, чтобы пользователь также мог использовать кнопку.
У кого-нибудь были подобные проблемы раньше? Как ты решил это?