1. 程式人生 > >如何設置scrollview的contentoffset卻不觸發DidScroll方法

如何設置scrollview的contentoffset卻不觸發DidScroll方法

bounds contentoffset scrollviewdidscroll

由於項目需要自定義一個日歷,後來在GitHub上找到了FSCalendar跟我們的項目需求很相似,就想拿過來改一下,看了看代碼,作者邏輯代碼能力挺強悍的(最起碼我看代碼饒了很長時間還沒有完全看懂)。我們的需求就是要把FS日歷的hearder換成中間顯示月份兩邊是兩個button可以點擊向左向右切換月份,由於作者所有切換日歷的邏輯都寫在Scrollview的代理方法scrollViewDidScroll裏面,所以在我的button點擊事件裏面設置Scrollview的contentoffset的時候,系統會自動調用ScrollviewDidScroll方法,所以除了執行點擊事件裏面我設置的更換日歷相關邏輯,還會自動調用ScrollviewDidScroll方法中實現的邏輯,導致混亂。最終還是受作者的代碼啟發,使用bounds代替contentoffset,同樣實現切換Scrollview顯示的位置但是不會觸發ScrollviewDidScroll方法,核心代碼如下:

_scrollView.bounds = CGRectOffset(_scrollView.bounds, self.flowOffset.x, self.flowOffset.y);


其實bounds的x,y值也是可以不為0的,不為0時代表相對於自身坐標系的位置偏移,和contentoffset作用相似,做個筆記,如有錯誤,敬請指出!

如何設置scrollview的contentoffset卻不觸發DidScroll方法