スクロールが必要かどうかを確認するメソッドを作成してみてください。スクロールが必要ない場合は、すぐにプッシュを呼び出します。それ以外の場合は、デリゲートの呼び出しを待ってからプッシュします。
- (BOOL)isSrollingingNeededForIndexPath:(NSIndexPath *)indexPath {
NSArray *visibleIndices = [self.tableView indexPathsForVisibleRows];
for (NSIndexPath *visibleIndexPath in visibleIndices)
if ([indexPath compare:visibleIndexPath] == NSOrderedSame)
return NO;
return YES;
}
編集:良い点。indexPathsForVisibleRows
データのレンダリングに使用されるため。
とindexPathsForRowsInRect
を使用して「目に見える四角形」を決定する場所で、本質的に同じことを行うことができます。content.offset.y
tableview.frame.size.height
rowHeight-1
次に、上部と下部の部分的に表示される行を考慮して、四角形の上部に追加し、四角形の下部から減算することができますrowHeight - 1
。静的な高さの行がある場合、コードはあまり危険ではありません。さまざまな高さの行がある場合でも機能しますが、もう少し複雑になります。
とはいえ、簡単な答えが得られると思われるものには、多くのコードが含まれているようです。