1

自動レイアウト制約を採用する状態になったようです。

「単純に」、画像のように、その中にコンテナビュー(メインビューと同じサイズ)とさらに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 秒のアニメーションは、何が起こるかを確認するためのものです!)

これを説明するのは難しいですが、キーボードが表示されているときにテーブル ビューを最後の行までスクロールしてからキーボードを閉じると、テーブル ビューが「上にジャンプ」し、下の行がナビゲーション バーの下にほとんど消えます。全体が静かにスクロールして所定の位置に収まります。テーブルビューがフルサイズになったようですが、もちろんオフスクリーンであり、ビューが正しい場所に収まるようにアニメーション化されます。

私はそれを十分に説明したことを願っています。アニメーションを説明するのは簡単ではありませんが、スプリングとストラットの下で、テーブルを元のサイズと位置にスムーズにアニメーションで戻すことができます。通常のアニメーション速度で実行すると、この問題によりちらつきが発生しますが、これは「ちょうど」許容範囲ですが、誰かが助けてくれるなら、この問題を修正したいと思いますか? 髪を引っ張ってる!

ありがとう

4

1 に答える 1

0

無料の Sensible TableView フレームワークを使用すると、すべてのサイズ変更を自動的に処理できます。毎日多くの時間を節約できます。

于 2013-07-09T15:07:33.000 に答える