Это дерьмо стрелять, чтобы получить базовую функциональность осведомленности клавиатуры ScrollView работает. Для моего Android-приложения он отлично работает на одном экране, который почти идентичен другому, для которого не работает. И на iOS это просто не работает. Это то, что работает для меня:
import { Keyboard, ScrollView, StyleSheet, View } from 'react-native';
this.state = {
filler: false,
}
componentWillMount() {
this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow.bind(this));
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide.bind(this));
}
componentWillUnmount() {
this.keyboardDidShowListener.remove();
this.keyboardDidHideListener.remove();
}
_keyboardDidShow() {
this.setState({filler: true})
setTimeout(() => this.vertical && this.vertical.scrollToEnd({animated: true}), 0);
}
_keyboardDidHide() {
this.setState({filler: false})
}
...
return (
<ScrollView ref={ref => this.vertical = ref}>
<TextInput/>
{ this.state.filler ? <View style={styles.filler}/> : null }
</ScrollView>
)
styles.filler = {
height: 'Keyboard Height'
}
Примечание: Это может работать только тогда, когда ваш <TextInput/>
находится в нижней части экрана, который это было в моем случае.
Здесь нам нужно больше контекста/кода. –
Возможный дубликат [Как автоматически вывести окно из-за клавиатуры, когда TextInput имеет фокус?] (Http://stackoverflow.com/questions/29313244/how-to-auto-slide-the-window-out-from -behind-keyboard-when-textinput-have-focus) – Sherlock
Вы можете захотеть сделать это [https://github.com/facebook/react-native/issues/3195#issuecomment-146568644) Github. Мы обсуждаем, как этого добиться. – amb