Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как перехватить изменения UIScrollView contentOffset из подкласса UITableView?

Автор вопроса: dontWatchMyProfileОтветов: 2

Фактически, UITableView - это UIScrollView (наследуется от него). Теперь я создал подкласс UITableView и добавил к нему эту строку кода:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"contentOffset: %@", NSStringFromCGPoint(self.contentOffset));
}

По какой-то причине это никогда не вызывается, когда я прокручиваю таблицу. Но поскольку UITableView имеет собственное свойство делегата, я предполагаю, что он должен реализовывать протокол UIScrollViewDelegate и является делегатом для самого представления прокрутки. Не так ли?

Как я мог перехватить изменение положения прокрутки? Я хочу только их прочитать. Наверное, я не мог установить их с помощью contentOffset, верно?

iphoneuitableview

Ответы

Ответ 1 · рейтинг 1 · Vladimir

Наверное, я не мог установить их с помощью contentOffset, верно?

Поскольку UITableView наследуется от UIScrollView, вы можете получить и установить его свойство contentOffset.

Также обратите внимание, что протокол UITableViewDelegate определяется следующим образом:

@protocol UITableViewDelegate<NSObject, UIScrollViewDelegate>

То есть он также соответствует протоколу UIScrollViewDelegate, поэтому делегат вашего tableView (а не сам UITableView) может реализовывать любые методы UIScrollViewDelegate, и они должны вызываться нормально.

Ответ 2 · рейтинг 1 · drawnonward

Просто реализуйте setContentOffset: и вызовите super после того, как прочтете нужные значения. UITableView - это UIScrollView, поэтому вы можете прокручивать его, также вызывая setContentOffset :.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы