我有一种很笨拙的方式来做到这一点,它可能会或可能不会帮助你。
您尝试使用scrollViewWillBeginDecelerating:做一些事情没有奏效,因为该方法只是为您提供新闻,而不是要求获得许可(返回void)。
相反,你可以实现scrollViewDidScroll:,也没有征求许可,但在这种方法中,你可以通过使滚动视图不,其实设置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");
}
}
的方法scrollViewDidScroll:将被调用多次的每次尝试,因为滚动视图滚动仍试图滚动和有气势。然而,在我对这段代码的测试中,我没有看到任何明显的滚动。
希望这会有所帮助。
“因为它锁定了UI” - 你是什么意思?它只锁定滚动视图,以便它不滚动 - 是不是你想要的? – foundry 2013-02-28 16:09:38
不,它会锁定我想要的那个滚动视图上的接触,但要有条件地禁用滚动。 – Huang 2013-02-28 16:14:21
接触子视图仍然有效,你试图拿起什么接触? – foundry 2013-02-28 16:34:31