По моему опыту, реагировать на родную веб-версию было трудно вести себя так, как мне хочется, с клавиатурой на iOS.Он не меняет свою высоту автоматически, когда отображается клавиатура, а ее содержимое скрывается клавиатурой.
Он также ведет себя странным образом, завернутый в KeyboardAvoidingView .В моем случае кажется, что он слишком сильно корректирует содержимое WebView, примерно вдвое больше высоты клавиатуры.Такое же поведение появилось, когда я вручную прослушивал события открытия / закрытия клавиатуры и соответственно настраивал высоту WebView:
componentDidMount(){
Keyboard.addListener("keyboardWillShow", this.keyboardDidShow.bind(this));
Keyboard.addListener("keyboardWillHide", this.keyboardDidHide.bind(this));
}
componentWillUnmount(){
Keyboard.removeListener("keyboardWillShow", this.keyboardDidShow.bind(this));
Keyboard.removeListener("keyboardWillHide", this.keyboardDidHide.bind(this));
}
keyboardDidShow(event){
this.setState({
keyboardHeight: event.endCoordinates.height
});
}
keyboardDidHide(event){
this.setState({
keyboardHeight: 0
});
}
render(){
return (
<WebView
style={{flex: 1, maxHeight: Dimensions.get("window").height - this.state.keyboardHeight}}
/>
);
}
Я нашел решение, не оптимальное, но решение, тем не менее.Мой ответ опубликован ниже.