私の経験では、react-native-webviewは、iOS のキーボードで思いどおりに動作するのが難しいことがわかりました。キーボードが表示され、その内容がキーボードによって隠されている場合、その高さは自動的に変更されません。
また、KeyboardAvoidingViewでラップされた奇妙な動作もします。私の場合、WebView のコンテンツを調整しすぎているようで、キーボードの高さの約 2 倍です。この同じ動作は、キーボードの開閉イベントを手動でリッスンし、それに応じて 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}}
/>
);
}
私は解決策を見つけましたが、最適ではありませんが、解決策は少なくありません。私の答えは以下に掲載されています。