2012-07-02 15 views

Respuesta

25

La respuesta es realmente simple usando KVO (Key Value Observation);

- (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 
    } 
} 

Aunque no estoy seguro acerca de las banderas.

+0

Sé que esto fue hace un tiempo pero ¡muchas gracias! – ryanwils

+11

Recuerde también '-removeObserver: forKeyPath: context:' – titaniumdecoy

+0

Normalmente pongo el '-removeObserver: forKeyPath: context:' en el método '-dealloc'. –

0

Para aquellos que no les gusta KVO:

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

Sí, sólo tiene que utilizar super para acceder al método de los padres. Esto supone que usted subclase UIScrollview/TableView/CollectionView

Cuestiones relacionadas