我有一種很笨拙的方式來做到這一點,它可能會或可能不會幫助你。
您嘗試使用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