@Stephen
यदि आपको कोई आपत्ति नहीं है कि कीबोर्ड जिस दर पर दिखाई दे रहा है ठीक उसी दर पर, तो आप सिर्फ LayoutAnimation का उपयोग कर सकते हैं, ताकि कम से कम ऊँचाई जगह पर न उछले। जैसे
प्रतिक्रिया-मूल से LayoutAnimation आयात करें और अपने घटक में निम्न विधियाँ जोड़ें।
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);
},
कुछ उदाहरण एनिमेशन हैं (मैं ऊपर स्प्रिंग का उपयोग कर रहा हूं):
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,
},
},
},
};
अपडेट करें:
नीचे दिए गए @ शर्लक के उत्तर को देखें, प्रतिक्रिया-देशी 0.11 के रूप में कीबोर्ड का आकार बदलना कार्यक्षमता में निर्मित का उपयोग करके हल किया जा सकता है।