1

これが私が直面している問題です。メインビュー内に UITableView があります。ユーザーがメニューボタンをタップすると、ビューがスーパービューのビュー階層に追加され、このビューはメニューボタンを除くすべての画面をカバーします。それは私が呼ぶ

[self.view insertSubview:self._menuView belowSubview:self._menuButton]

ユーザーがメニューボタンをもう一度クリックした後、私は呼び出します

[self._menuView removeFromSuperview]

ただし、この後、UITableView はスクロールを停止し、実際にはスクロールしますが、ほんの数ピクセルだけスクロールし、_menuView を挿入する前の場所に戻ります。_menuView を挿入および削除した後にメニュー階層を監視しましたが、実際には削除されており、UITableVIew をカバーするビューもないため、他のビューが UITableView からタッチを盗む可能性はありません。何が問題になる可能性がありますか? 何か案は?

編集 1:スクロールできないことに加えて、別の奇妙なことが起こることに気付きました。menuView を表示すると、アニメーションなしで tableView が一番上にスクロールされます。(menuView は半分だけ不透明なので、その下に tableView が見えます)

編集 2: _menuView を挿入する前後に、tableView の contentSize と contentOffset を監視しました。スクロールできない理由は、何らかの形で contentSize が変更されているためです。

TABLE VIEW BEFORE INSERTING MENU - contentSize:{Width=320, Height=10519} contentOffset:{X=0, Y=3980}
TABLE VIEW AFTER INSERTING MENU - contentSize:{Width=320, Height=44} contentOffset:{X=0, Y=0}

ご覧のとおり、高さが 44 に変更されているため、スクロールできません。また、編集 1で述べたように、 tableView が一番上にスクロールされているため、contentOffset もゼロになっていることがわかります。コンテンツのサイズが自動的に変更される理由はありますか?

前もって感謝します。

4

2 に答える 2

0

UITableView のコンテンツは自動的に編成され、セルとヘッダー/フッター要素のみを表示するように設計されています。適切に作業するには、テーブルをparentViewにラップし、UITableViewではなくそのparentViewにメニューを追加する必要があります。ビューのコンテンツサイズを復元できるため、テーブルで reloadData メソッドを呼び出すこともできます。

于 2013-10-14T10:55:58.157 に答える
0

テーブルビュー フレームに問題があると思います。サブビューを削除した直後に、テーブルビューのフレームを元のフレームに設定してみてください。これで問題が解決する場合があります

于 2013-10-14T09:42:57.877 に答える