私はそれをするためのちょっと不器用な方法を持っていますが、それはあなたを助けるかもしれないし、助けないかもしれません。
scrollViewWillBeginDecelerating:を使用して何かをしようとしても機能しませんでした。これは、メソッドがニュースを提供するだけで、許可を求めていないためです(voidを返します)。
代わりに、許可を求めていないscrollViewDidScroll:を実装できますが、そのメソッドでは、scrollviewが実際に移動しないようにcontentOffset値を設定することにより、スクロールが発生しないようにすることができます。これを機能させるには、スクロールしたくない他の場所を検出して、その時点でcontentOffsetを保存する必要があります。
// Condition starts. Save the content offset
if (whatever) {
lockedContentOffset = tableView.contentOffset;
}
..。
- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
if (condition_for_which_i_dont_want_to_scroll) {
scrollView.contentOffset = lockedContentOffset;
NSLog(@"Reset content offset");
}
}
scrollViewはまだスクロールを試みており、勢いがあるため、メソッドscrollViewDidScroll:は、スクロールを試みるたびに数回呼び出されます。ただし、このコードのテストでは、明らかなスクロールは見られませんでした。
お役に立てれば。