@ Stephen
Wenn es Ihnen nichts ausmacht, wenn die Höhe nicht genau mit der Geschwindigkeit animiert wird, mit der die Tastatur angezeigt wird, können Sie einfach LayoutAnimation verwenden, damit zumindest die Höhe nicht an ihren Platz springt. z.B
Importieren Sie LayoutAnimation aus React-Native und fügen Sie Ihrer Komponente die folgenden Methoden hinzu.
getInitialState: function() {
return {keyboardSpace: 0};
},
updateKeyboardSpace: function(frames) {
LayoutAnimation.configureNext(animations.layout.spring);
this.setState({keyboardSpace: frames.end.height});
},
resetKeyboardSpace: function() {
LayoutAnimation.configureNext(animations.layout.spring);
this.setState({keyboardSpace: 0});
},
componentDidMount: function() {
KeyboardEventEmitter.on(KeyboardEvents.KeyboardDidShowEvent, this.updateKeyboardSpace);
KeyboardEventEmitter.on(KeyboardEvents.KeyboardWillHideEvent, this.resetKeyboardSpace);
},
componentWillUnmount: function() {
KeyboardEventEmitter.off(KeyboardEvents.KeyboardDidShowEvent, this.updateKeyboardSpace);
KeyboardEventEmitter.off(KeyboardEvents.KeyboardWillHideEvent, this.resetKeyboardSpace);
},
Einige Beispielanimationen sind (ich verwende die Feder oben):
var animations = {
layout: {
spring: {
duration: 400,
create: {
duration: 300,
type: LayoutAnimation.Types.easeInEaseOut,
property: LayoutAnimation.Properties.opacity,
},
update: {
type: LayoutAnimation.Types.spring,
springDamping: 400,
},
},
easeInEaseOut: {
duration: 400,
create: {
type: LayoutAnimation.Types.easeInEaseOut,
property: LayoutAnimation.Properties.scaleXY,
},
update: {
type: LayoutAnimation.Types.easeInEaseOut,
},
},
},
};
AKTUALISIEREN:
Siehe die Antwort von @ sherlock weiter unten. Ab reaktionsfähigem 0.11 kann die Größenänderung der Tastatur mithilfe der integrierten Funktionalität gelöst werden.