自動レイアウト制約を採用する状態になったようです。
「単純に」、画像のように、その中にコンテナビュー(メインビューと同じサイズ)とさらにUITableViewがあるビューがあります。
テーブルでセルが選択されると、キーボードが表示され、コンテナー ビューの下部制約がキーボードの高さだけ上に移動します。(下の制約は IBOutlet を介して接続されます)。拘束されているため、テーブルも一緒に移動します。
-(void)scrollInputUp:(NSInteger)height duration:(NSTimeInterval)animationDuration
{
self.keyboardHeight.constant = -height;
[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:animationDuration animations:^{
[self.view layoutIfNeeded];
}];
NSIndexPath *currentIndexPath = myTable.indexPathForSelectedRow;
[myTable scrollToRowAtIndexPath:currentIndexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}
また、選択した行を所定の位置にスクロールします。これはうまく機能し、制約を使用してこれを行う「標準的な」方法のようです。self.keyboardHeight は私の下限の制約であり、他のすべての制約は固定されています。次に、縮小サイズのテーブルを作成します。
以下のようにキーボードを閉じると、私の問題が発生します...
-(void)scrollInputDown:(NSTimeInterval)animationDuration
{
[self.view setNeedsUpdateConstraints];
self.keyboardHeight.constant = 0;
[UIView animateWithDuration:5 animations:^{
[self.view layoutIfNeeded];
}];
}
(5 秒のアニメーションは、何が起こるかを確認するためのものです!)
これを説明するのは難しいですが、キーボードが表示されているときにテーブル ビューを最後の行までスクロールしてからキーボードを閉じると、テーブル ビューが「上にジャンプ」し、下の行がナビゲーション バーの下にほとんど消えます。全体が静かにスクロールして所定の位置に収まります。テーブルビューがフルサイズになったようですが、もちろんオフスクリーンであり、ビューが正しい場所に収まるようにアニメーション化されます。
私はそれを十分に説明したことを願っています。アニメーションを説明するのは簡単ではありませんが、スプリングとストラットの下で、テーブルを元のサイズと位置にスムーズにアニメーションで戻すことができます。通常のアニメーション速度で実行すると、この問題によりちらつきが発生しますが、これは「ちょうど」許容範囲ですが、誰かが助けてくれるなら、この問題を修正したいと思いますか? 髪を引っ張ってる!
ありがとう