2010-04-15 3 views
1

На самом деле UITableView является UIScrollView (наследуется от этого). Теперь, я сделал UITableView подкласса и добавили эту строку кода в нем:Как перехватить UIScrollView contentOffset изменения из подкласса UITableView?

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

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

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

ответ

1

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

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

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

@protocol UITableViewDelegate<NSObject, UIScrollViewDelegate> 

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

1

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

Смежные вопросы