2009-12-02 69 views
4

我正在用scrollToRowAtIndexPath進行UITableViews的編程滾動,它不會觸發scrollViewDidEndDecelerating。什麼是檢測滾動何時完成的好方法?檢測程序化UIScrollView滾動結束

我問,因爲在我的代碼:

[tableView1 scrollToRowAtIndexPath:indexPath1 atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 
[tableView2 scrollToRowAtIndexPath:indexPath2 atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; 

// Additional methods here 

偶爾出現這種滾動之前,之後,其他方法大火已完成。我想使用比performSelector:afterDelay:更傻的東西。

回答

9

你試過scrollViewDidEndScrollingAnimation:?它可能與您的其他代表方法有相同的問題,但值得一試。該文檔具體說它叫setContentOffset:animated:scrollRectToVisible:animated:的末尾,我有一個預感可能會被用來實現scrollToRowAtIndexPath:atScrollPosition:

編輯:已確認scrollViewDidEndScrollingAnimation:scrollToRowAtIndexPath:atScrollPosition:的末尾被調用。謝謝伊恩!

+0

呵呵,我在文檔中錯過了這個方法。我可以確認它在scrollToRowAtIndexPath的末尾調用:(大部分時間?! - UIScrollViews對我來說似乎是越野車)並且是我正在尋找的。謝謝。 – Ian 2009-12-02 19:38:41

+0

對我來說,它經常被調用。我在一個單元格中有一個textField,如果它的焦點被立即調用,然後在動畫之後再次調用......糟糕。 – 2015-08-25 22:12:33