でいくつかの下部の行を削除した後deleteRowsAtIndexPaths:withRowAnimation:
、テーブル ビューの長さが縮小し、これらの下部の行の損失を補うために自動的に下にスクロールされます。つまり、contentOffset が変更されます。
問題はscrollViewDidScroll:
、この場合呼び出されないことです。ここで contentOffset の変更を通知するために使用できる他のデリゲート メソッドはありますか?
でいくつかの下部の行を削除した後deleteRowsAtIndexPaths:withRowAnimation:
、テーブル ビューの長さが縮小し、これらの下部の行の損失を補うために自動的に下にスクロールされます。つまり、contentOffset が変更されます。
問題はscrollViewDidScroll:
、この場合呼び出されないことです。ここで contentOffset の変更を通知するために使用できる他のデリゲート メソッドはありますか?
これは、キー値監視の使用例のように思えます。
これをコントローラーに追加してみてください:
[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プロパティを観察することをお勧めします。これは、行が追加または削除されたときにのみこの通知を発生させるはずです。