キーボードを開いたときにアニメーションを実行し、閉じるときに元の状態に戻したいです。キーボードリスナーはthis.stateを変更できません
問題がある:
未定義のは、私は良い作品Keyboard.listenerを持っている( 'this.state.scaleValue' を評価)オブジェクト
ではありません。
州:
this.state = {
scaleValue: new Animated.Value(0),
}
アニメーション表示
<Animated.View style={styles.logoContainer,
{
transform: [
{scale: logoScale}
]
}
}>
<Image source={require('./someimage.png')} style={{width: 64, height: 64}} />
</Animated.View>
補間
const logoScale = this.state.scaleValue.interpolate({
inputRange: [0, 0.5, 1],
outputRange: [1, 0.5, 0]
});
トリガー
_keyboardDidShow() {
this.state.scaleValue.setValue(0);
Animated.timing(
this.state.ScaleValue,
{
toValue: 1,
duration: 300,
easing: Easing.easeOutBack
}
).start();
}
それで、私は、トリガのコードを関数に入れ、それをTouchableでonPressと呼ぶと、それは機能します。
'this'は' Animated.timing'に提供された関数内で同じコンテキストではありません。あなたがバインドする必要があります: 'this._keyboardDidShow = this._keyboardDidShow.bind(this)'それがうまくいかない場合は、おそらく 'timing = 'の呼び出しの上に' let me = this'を設定することもできます(そして '私の方法で)。 – G0dsquad
@ G0dsquadあなたが正しいです。ありがとう。 – Mirakurun
いいえ問題は、私はあなたのための答えとしてそれを追加しました:) – G0dsquad