@ Данило ответ работает, но его необходимо применить ко всем текстовым вводам. Я закончил тем, что использовал решение Данило с небольшим поворотом.
Keyboard.dismiss()
действительно размывает любой активный TextInput, поэтому в случае события keyboardDidHide я просто вызываю Keyboard.dismiss () (хотя клавиатура просто отключается нажатием кнопки назад).
Мне просто нужно добавить это в мой основной компонент.
import * as React from 'react';
import { Keyboard } from 'react-native';
class MyComponent extends React.Component {
componentDidMount() {
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this.keyboardDidHide);
}
componentWillUnmount() {
this.keyboardDidHideListener.remove();
}
keyboardDidHide = () => {
Keyboard.dismiss();
};
//Rest of component...
}
Вы можете испытать это решение в этой выставочной закуске.
Если ваше приложение имеет несколько TextInputs, которые onSubmitEditing фокусируют следующий TextInput, вот как я заставил его работать:
...
keyboardDidHide = () => {
this.keyboardTimeout = setTimeout(() => Keyboard.dismiss(), 300)
};
keyboardDidShow = () => {
clearTimeout(this.keyboardTimeout)
};
...