コンテキスト 私は2つのテキストフィールドをスタックビューで持っています。いずれかをタップすると、両方を同時に上に動かす必要があります。アニメーションの状態を追跡する方法
1つのテキストフィールドから次のテキストフィールドに切り替えると、両方のテキストフィールドを同じ場所に置いておきたいと思います。これは、キーボードが消されたときにのみ元に戻ります。
両方のテキストフィールドに独自のデリゲートがあるため、1つずつ次へクリックすると下向きのアニメーションがわずかにジャンプします。ジャンプは私が削除したいバグです。
私が試したこと: アニメーションが既に発生しているかどうかを確認するBoolを作成しました。しかし、自己付着した状態を変えるだけでなく、方法でそれを引き起こすことは機能していないようです。
func didAnimate() {
self.isAnimated = true
print("Didanimate result:" + String(isAnimated))
}
func animateUp() {
// moves views up to avoid keyboard
UIView.animate(withDuration: 0.5,
delay: 0,
options: .curveEaseOut,
animations: {
self.textFieldsY.constant += 200
//print("~~~~~~~~~")
self.view.layoutIfNeeded()
self.didAnimate()
print(self.isAnimated)
}, completion: { (finished: Bool) in
self.isAnimated = true
})
}
func animateDown() {
// moves views down after keyboard leaves
UIView.animate(withDuration: 1,
delay: 0,
options: .curveEaseOut,
animations: {
self.textFieldsY.constant -= 200
self.view.layoutIfNeeded()
self.isAnimated = false
}, completion: nil)
}
//MARK:- Text Field delegate
func textFieldDidBeginEditing(_ textField: UITextField) {
if (keyBoardIsVisible) {
// no need to animate anything
} else {
self.animateUp()
self.keyBoardIsVisible = true
}
print("initial animate result:" + String((isAnimated)))
}
func textFieldDidEndEditing(_ textField: UITextField) {
if(keyBoardIsVisible) {
animateDown()
self.keyBoardIsVisible = false
}
}
イメージとしてあなたのコードを投稿しないでください。実際のテキストをコピーしてあなたの質問に貼り付けてください。画像は読みにくく、検索できず、コードを参照またはコピーできません。 – rmaddy
画像のスクリーンショットを投稿しないでください。 – user3287355
フィードバックありがとう – codechef