@ স্টেফেন
কীবোর্ডটি ঠিক একই হারে উচ্চতা অ্যানিমেট না রাখলে আপনি যদি আপত্তি না করেন তবে আপনি কেবল লেআউটএনিমেশন ব্যবহার করতে পারেন, যাতে কমপক্ষে উচ্চতা স্থানে না যায়। যেমন
বিক্রিয়া-নেটিভ থেকে লেআউটএনিমেশন আমদানি করুন এবং আপনার উপাদানগুলিতে নিম্নলিখিত পদ্ধতিগুলি যুক্ত করুন।
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 প্রতিক্রিয়া অনুসারে কীবোর্ড পুনরায় আকার দেওয়া কার্যকারিতা সহ বিল্ট ব্যবহার করে সমাধান করা যেতে পারে।