- このメソッドは自分で呼び出すか、またはテーブルビューのセルの中に UITextField のようなフォーカスを取るコントロールを配置して、それが選択されたときに呼び出される
- このメソッドで指定した indexPath の section に Header View or Header Text / Footer View or Footer Text が指定されているとき、このメソッドは選択された indexPath の row だけではなく、それらのヘッダやフッタも同時に表示される位置にスクロールしようとする
- ということであんまり長い Section Header / Section Footer を作ると scrollToRowAtIndexPath:atScrollPosition:animated: の挙動がおかしくなる
- Table View Header / Table View Footer については全然無関係なので長くしても大丈夫
初期状態

section3つ、row3つ、合計9行のtable viewを作って、それぞれにsection header / section footerを追加しました。このテーブルビューを使って実験を行います。
UITableViewScrollPositionTopを指定してスクロール
section0, row0 | ![]() | section0, row1 | ![]() | section0, row2 | ![]() |
section1, row0 | ![]() |
UITableViewScrollPositionTopを指定すると、sectionの一番上のrowが指定された場合のみ、そのsectionのsection headerの高さを考慮してスクロールするようになります。
UITableViewScrollPositionMiddleを指定してスクロール
section0, row0 | ![]() | section0, row1 | ![]() | section0, row2 | ![]() |
section1, row0 | ![]() | section1, row1 | ![]() | section1, row2 | ![]() |
UITableViewScrollPositionMiddleの場合は特にsection header / section footer関係なく、中央に選択された行が来るようにスクロールするようです。
UITableViewScrollPositionBottomを指定してスクロール
section0, row0 | ![]() | section0, row1 | ![]() | section0, row2 | ![]() |
section1, row0 | ![]() | section1, row1 | ![]() | section1, row2 | ![]() |
UITableViewScrollPositionBottomを指定すると、sectionの一番下のrowが指定された場合のみ、そのsectionのsection footerの高さを考慮してスクロールするようになります。