Also habe ich eine schnelle Überprüfung, da mein Verständnis davon, wie dies in nativen iOS zu tun, und es scheint wie in neueren Versionen von nativen reagieren, können Sie dies relativ einfach tun.
Es scheint ein paar Optionen zu geben, abhängig von Ihren Flexibilitätsanforderungen.
Zuerst haben Sie versucht, KeyboardAvoidView
anstelle eines Standardcontainers View
ohne Angabe keyboardVerticalOffset
zu verwenden?
Eine andere Option, die Ihnen viel mehr Kontrolle gibt (ähnlich wie in einer nativen iOS-App), ist die Verwendung des Moduls Keyboard
, um Listener für Tastaturereignisse zu erstellen.
componentWillMount() {
this.keyboardWillShowSub = Keyboard.addListener('keyboardWillShow', this.keyboardWillShow);
this.keyboardWillChangeSub = Keyboard.addListener('keyboardWillChangeFrame', this.keyboardWillChange);
this.keyboardWillHideSub = Keyboard.addListener('keyboardWillHide', this.keyboardWillHide);
}
componentWillUnmount() {
this.keyboardWillShowSub.remove();
this.keyboardWillChangeSub.remove();
this.keyboardWillHideSub.remove();
}
Dies würde ermöglichen es Ihnen, die Tastaturhöhe vom Ereignisparameter zu erhalten:
keyboardWillShow = (event) => {
Animated.parallel([
Animated.timing(this.keyboardHeight, {
duration: event.duration,
toValue: event.endCoordinates.height,
}),
Animated.timing(this.imageHeight, {
duration: event.duration,
toValue: IMAGE_HEIGHT_SMALL,
}),
]).start();
};
Wiederholen Sie etwas ähnliches für keyboardWillChange und keyboardWillHide.
Für eine bessere, genauere Erläuterung der Optionen finden Sie auf dieser Seite: https://medium.freecodecamp.org/how-to-make-your-react-native-app-respond-gracefully-when-the-keyboard-pops-up-7442c1535580
ich die beste erste Test denke, die keyboardVerticalOffset
bevor Sie versuchen, den Code zu versuchen, wäre zu entfernen hinzufügen, um die keboard Ereignisse zu behandeln.
andere Sache zu prüfen ist, dass die Größe der Tastatur ändern können, wie Sie den Tastaturtyp ändern. Ich bin nicht vertraut mit dem Umgang mit reactNative, aber im nativen iOS-Code würden Sie sich als Beobachter für die Benachrichtigung "UIKeyboardWillChangeFrameNotification" registrieren.Die userInfo, die Sie mit der Benachrichtigung erhalten würden, würde Ihnen Details des Tastaturrahmens geben. https://stackoverflow.com/a/35427662/3708242. Aber ich bin mir nicht sicher, ob es eine Möglichkeit gibt, Benachrichtigungen in der nativen Reaktion zu erfassen. – wottle
Haben Sie jemals eine Lösung gefunden? – Lorenz