1

でいくつかの下部の行を削除した後deleteRowsAtIndexPaths:withRowAnimation:、テーブル ビューの長さが縮小し、これらの下部の行の損失を補うために自動的に下にスクロールされます。つまり、contentOffset が変更されます。

問題はscrollViewDidScroll:、この場合呼び出されないことです。ここで contentOffset の変更を通知するために使用できる他のデリゲート メソッドはありますか?

4

1 に答える 1

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プロパティを観察することをお勧めします。これは、行が追加または削除されたときにのみこの通知を発生させるはずです。

于 2012-04-25T17:22:25.577 に答える