Фактически, UITableView - это UIScrollView (наследуется от него). Теперь я создал подкласс UITableView и добавил к нему эту строку кода:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"contentOffset: %@", NSStringFromCGPoint(self.contentOffset));
}
По какой-то причине это никогда не вызывается, когда я прокручиваю таблицу. Но поскольку UITableView имеет собственное свойство делегата, я предполагаю, что он должен реализовывать протокол UIScrollViewDelegate и является делегатом для самого представления прокрутки. Не так ли?
Как я мог перехватить изменение положения прокрутки? Я хочу только их прочитать. Наверное, я не мог установить их с помощью contentOffset, верно?
Ответ 1 · рейтинг 1 · Vladimir
Наверное, я не мог установить их с помощью contentOffset, верно?
Поскольку UITableView наследуется от UIScrollView, вы можете получить и установить его свойство contentOffset.
Также обратите внимание, что протокол UITableViewDelegate определяется следующим образом:
@protocol UITableViewDelegate<NSObject, UIScrollViewDelegate>
То есть он также соответствует протоколу UIScrollViewDelegate, поэтому делегат вашего tableView (а не сам UITableView) может реализовывать любые методы UIScrollViewDelegate, и они должны вызываться нормально.
Ответ 2 · рейтинг 1 · drawnonward
Просто реализуйте setContentOffset: и вызовите super после того, как прочтете нужные значения. UITableView - это UIScrollView, поэтому вы можете прокручивать его, также вызывая setContentOffset :.