2012-04-25 70 views
1

刪除與deleteRowsAtIndexPaths:withRowAnimation:一些底部行後後contentOffset改變通知任何代表方法,我的表視圖收縮的長度和它自動滾動下來,以補償這些底行的損耗,這意味着其contentOffset被改變。爲deleteRowsAtIndexPaths

問題是scrollViewDidScroll:在這種情況下不會被調用。有沒有其他的委託方法可以用來獲取contentOffset變更的通知?

回答

0

這聽起來像是用於鍵值觀察的用例。

嘗試添加該到你的控制器:

 [tableView addObserver:self 
        forKeyPath:@"contentOffset" 
         options:NSKeyValueObservingOptionNew 
         context:nil]; 

然後就可以實現在控制器此方法。

-(void) observeValueForKeyPath: (NSString *)keyPath 
         ofObject: (id) object 
         change: (NSDictionary *) change 
         context: (void *) context { 

    if ([keyPath isEqualToString:@"contentOffset"]) { 

     //Do Something with content offset 

    } 

}

然而,這個通知很可能會解僱你每次滾動,因爲你所觀察的contentOffset財產的時間。我建議觀察contentSize屬性,該屬性應該只在添加或刪除行時觸發此通知。

+0

'contentOffset'的KVO是矯枉過正的。此外,KVO(不管是'contentOffset'還是'contentSize')都有明顯的延遲。 – an0 2012-04-26 00:35:41

相關問題