UITableView/UIScrollView, как автоматически узнать, когда ContentSize изменяется?

Есть ли автоматический способ знать изменения ContentSize в UITableView/UIScrollView?

2 ответа

Ответ на самом деле прост с использованием KVO (Key Value Observing);

- (id)initWithFrame:(CGRect)frame tableView:(UITableView *)tableView
{
 // ....
 [self.tableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionPrior context:NULL];
 // ....
}
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{
 if ([keyPath isEqualToString:@"contentSize"]) 
 {
 // Do something
 }
}

Я еще не уверен в флагах.


Для тех, кто не любит KVO:

- (void)setContentSize:(CGSize)contentSize {
 [super setContentSize:contentSize];
 // Do something.
}

Да, просто используйте super для доступа к родительскому методу. Предположим, что ваш подкласс UIScrollview/TableView/CollectionView

licensed under cc by-sa 3.0 with attribution.