2011-01-22 58 views
1

我有一些事情要做的scrollViewDidEndScrollingAnimation時間與DoThis函數。 但有時,具有animate = YES的scrollToRowAtIndexPath不會滾動任何內容。iPhone - 我怎麼知道,如果scrollToRowAtIndexPath將滾動一些

那麼我怎麼能知道滾動將完成,以便能夠強制在scrollToRowAtIndexPath調用後的替代函數DoThisWithNoScrollOccured調用?

回答

1

您可以檢查indexPathsForVisibleRows並查看您嘗試滾動的RowAtIndexPath是否已經可見。如果它已經可見,則不會滾動。

+2

這並非總是如此,這取決於UITableViewScrollPosition的值。 – NachoSoto 2014-02-21 19:36:26

4

約書亞的答案是非常接近的,但我碰到的情況,即滾動發生,即使indexPath要滾動到在indexPathsForVisibleRows上市。

例如,如果您使用的是滾動位置UITableViewScrollPositionTop滾動到indexPath,滾動將在indexPath在indexPathsForVisibleRows被列爲仍然發生 - 如果你indexPath不是第一個可見indexPath並有經過顯示行在indexPathsForVisibleRows中列出的那些。

在這種情況下,UITableView嘗試滾動indexPath儘可能靠近最頂端的顯示位置。

我還沒有嘗試過,但我希望UITableViewScrollPositionBottom有類似的效果,如果有你會被滾動到indexPath上面顯示的行,而indexPath您滾動到是不是最後一個可見indexPathindexPathsForVisibleRows

3

對於iOS7,這兩種方法都不適用於我,可能是因爲我的UITableView的內容嵌入。 indexPathsForVisibleRows返回的索引路徑由於位於UINavigationBar後面而無法與之交互。相反,我做了以下操作:

CGRect rect = [tableView rectForRowAtIndexPath:indexPath]; 
if (rect.origin.y != self.tableView.contentOffset.y + self.tableView.contentInset.top) { 
    // scrollToRowAtIndexPath will animate and callback scrollViewDidEndScrollingAnimation 
} else { 
    // scrollToRowAtIndexPath will have no effect 
}    
+0

是的,是的,是的 - 這正是我一直在尋找的。非常感謝 !!! – KoCMoHaBTa 2015-03-12 14:55:09

相關問題