我有一些事情要做的scrollViewDidEndScrollingAnimation時間與DoThis函數。 但有時,具有animate = YES的scrollToRowAtIndexPath不會滾動任何內容。iPhone - 我怎麼知道,如果scrollToRowAtIndexPath將滾動一些
那麼我怎麼能知道滾動將完成,以便能夠強制在scrollToRowAtIndexPath調用後的替代函數DoThisWithNoScrollOccured調用?
我有一些事情要做的scrollViewDidEndScrollingAnimation時間與DoThis函數。 但有時,具有animate = YES的scrollToRowAtIndexPath不會滾動任何內容。iPhone - 我怎麼知道,如果scrollToRowAtIndexPath將滾動一些
那麼我怎麼能知道滾動將完成,以便能夠強制在scrollToRowAtIndexPath調用後的替代函數DoThisWithNoScrollOccured調用?
您可以檢查indexPathsForVisibleRows
並查看您嘗試滾動的RowAtIndexPath是否已經可見。如果它已經可見,則不會滾動。
約書亞的答案是非常接近的,但我碰到的情況,即滾動將發生,即使indexPath
要滾動到在indexPathsForVisibleRows
上市。
例如,如果您使用的是滾動位置UITableViewScrollPositionTop
滾動到indexPath,滾動將在indexPath在indexPathsForVisibleRows
被列爲仍然發生 - 如果你indexPath
不是第一個可見indexPath
並有經過顯示行在indexPathsForVisibleRows
中列出的那些。
在這種情況下,UITableView嘗試滾動indexPath
儘可能靠近最頂端的顯示位置。
我還沒有嘗試過,但我希望UITableViewScrollPositionBottom
有類似的效果,如果有你會被滾動到indexPath
上面顯示的行,而indexPath
您滾動到是不是最後一個可見indexPath
在indexPathsForVisibleRows
。
對於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
}
是的,是的,是的 - 這正是我一直在尋找的。非常感謝 !!! – KoCMoHaBTa 2015-03-12 14:55:09
這並非總是如此,這取決於UITableViewScrollPosition的值。 – NachoSoto 2014-02-21 19:36:26