2012-04-25 5 views
1

deleteRowsAtIndexPaths:withRowAnimation:で最下行を削除した後、テーブルビューの長さが短くなり、これらの最下行の損失を補うために自動的にスクロールされ、contentOffsetが変更されます。deleteRowsAtIndexPathsの後のcontentOffset変更通知の任意のデリゲートメソッド

この場合、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

関連する問題