7

を使用する場合selectRowAtIndexPath:animated:scrollPosition:は、 を渡していUITableViewScrollPositionNoneます。名前にもかかわらず、行が表示されるように、必要に応じてテーブルビューがスクロールすることを期待しています(すでに表示されている場合はスクロールしません)。

UITableViewScrollPositionNone - テーブル ビューは対象の行をスクロールして、最小限の動きで完全に表示されるようにします。行がすでに完全に表示されている場合、スクロールは発生しません。たとえば、行が表示領域の上にある場合、動作は UITableViewScrollPositionTop で指定されたものと同じです。これがデフォルトです。

ただし、テーブル ビューがまったくスクロールしないことがわかりました。UITableViewScrollPositionTopまたはを使用するUITableViewScrollPositionBottomと、テーブル ビューが期待どおりにスクロールします。

これに関するドキュメントが間違っている可能性はありますか? または、何か不足していますか?

4

2 に答える 2

7

UITableView の selectRowAtIndexPath:animated:scrollPosition: のドキュメントには、発生していることを説明するセクションがあります。

特別な考慮事項 UITableViewScrollPositionNone を渡すと、その定数で説明されている最小スクロールではなく、スクロールがなくなります。最小限のスクロールで新しく選択された行にスクロールするには、UITableViewScrollPositionNone でこのメソッドを使用して行を選択し、UITableViewScrollPositionNone で scrollToRowAtIndexPath:atScrollPosition:animated: を呼び出します。

それが役立つことを願っています!

于 2013-07-30T08:02:55.293 に答える
0

テーブル ビューのコンテンツ ビューにスクロールするスペースがあることを確認する必要があります。ユーザーがテキストフィールドをタップしてキーボードが表示されたため、テーブルビューをスクロールする必要がありました。テーブルビューをスクロールできるように、テーブルビューのコンテンツをキーボードの高さまで拡張する必要があります。このような:

UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardFrame.size.height, 0.0);
self.tableView.contentInset = contentInsets;
self.tableView.scrollIndicatorInsets = contentInsets;
[self.tableView scrollToRowAtIndexPath:self.currentEditingCellIndexPath atScrollPosition:UITableViewScrollPositionNone animated:YES];
于 2013-01-09T13:51:19.400 に答える