問題描述
我在一個(gè)頁面上有幾個(gè) UIScrollView
.您可以單獨(dú)滾動(dòng)它們或?qū)⑺鼈冩i定在一起并將它們作為一個(gè)滾動(dòng).當(dāng)它們被鎖定時(shí)會(huì)出現(xiàn)問題.
I've got a a few UIScrollView
on a page. You can scroll them independently or lock them together and scroll them as one. The problem occurs when they are locked.
我使用 UIScrollViewDelegate
和 scrollViewDidScroll:
來跟蹤運(yùn)動(dòng).我查詢 UIScrollView
的 contentOffset
已更改,然后通過將其 contentOffset
屬性設(shè)置為匹配來反映更改到其他滾動(dòng)視圖.
I use UIScrollViewDelegate
and scrollViewDidScroll:
to track movement. I query the contentOffset
of the UIScrollView
which changed and then reflect change to other scroll views by setting their contentOffset
property to match.
太好了....除了我注意到很多額外的電話.以編程方式更改滾動(dòng)視圖的 contentOffset
會(huì)觸發(fā)委托方法 scrollViewDidScroll:
被調(diào)用.我嘗試使用 setContentOffset:animated:
代替,但我仍然在委托上獲得觸發(fā)器.
Great.... except I noticed a lot of extra calls. Programmatically changing the contentOffset
of my scroll views triggers the delegate method scrollViewDidScroll:
to be called. I've tried using setContentOffset:animated:
instead, but I'm still getting the trigger on the delegate.
如何以編程方式修改我的 contentOffsets 以不觸發(fā) scrollViewDidScroll:
?
How can I modify my contentOffsets programmatically to not trigger scrollViewDidScroll:
?
實(shí)施說明....每個(gè) UIScrollView
都是自定義 UIView
的一部分,它使用委托模式回調(diào)處理協(xié)調(diào)各種 contentOffset 的呈現(xiàn)
值.UIViewController
子類
Implementation notes....
Each UIScrollView
is part of a custom UIView
which uses delegate pattern to call back to the presenting UIViewController
subclass that handles coordinating the various contentOffset
values.
推薦答案
可以在不觸發(fā)委托回調(diào)scrollViewDidScroll:
的情況下改變UIScrollView
的內(nèi)容偏移量,通過設(shè)置 UIScrollView
的邊界并將原點(diǎn)設(shè)置為所需的內(nèi)容偏移量.
It is possible to change the content offset of a UIScrollView
without triggering the delegate callback scrollViewDidScroll:
, by setting the bounds of the UIScrollView
with the origin set to the desired content offset.
CGRect scrollBounds = scrollView.bounds;
scrollBounds.origin = desiredContentOffset;
scrollView.bounds = scrollBounds;
這篇關(guān)于以編程方式設(shè)置 contentOffset 觸發(fā) scrollViewDidScroll的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!