2016-09-29 75 views
0

我正在使用計時器並打印UIScrollViewcontentOffset.y以跟蹤它始終跟蹤UIScrollView contentOffset始終

但問題是UIScrollView只有在減速後才更新其contentOffset值。

我想知道在每012毫秒的定時器contentOffset.y值,我該怎麼做?如果我根本不能使用UIScrollViewcontentOffset,那麼有沒有其他方法可以跟蹤scrollView的類似值contentOffset.y

我正在使用swift。謝謝。

+0

你可以發佈任何你嘗試過的代碼嗎? –

+0

'讓計時器= Timer.scheduledTimer(一個時間間隔:0.01,目標:自,選擇器:#selector(self.timTick),用戶信息:無,重複:真)//聲明時間 FUNC timTick() { 設scrOffset = scrollView.contentOffset.y print(scrOffset) } //每0.01秒打印一次@ @PoojaSrivastava –

回答

2

除了通過使用定時器輪詢來跟蹤更改,您可以觀察對該值所做的任何更改。 UIScrollView有一個調用滾動事件的delegate屬性(請參閱UIScrollViewDelegate),並且contentOffset與KVO兼容。

或者你可以繼承UIScrollView,並嘗試重寫制定者(無論是contentOffsetbounds其中origin是補償,我不知道如果任,類內部調用哪一個, - 使用delegate是首選的解決方案)。

+0

謝謝您的回答。但是UIScrollView委託方法只有'WillBegin..'和'DidEnd ...'方法,這些方法只在我完成或開始時調用**拖動,滾動或scrollView本身**完成或開始**減速。每次我都需要知道數值**我的手指是否觸摸手機(或)滾動查看是否完成減速。我不知道如何覆蓋你提到的setter。 @Arkku –

+0

@thuraoo每當偏移改變時,滾動期間將調用'scrollViewDidScroll:',而不僅僅是開始/結束。 (只需嘗試一下。)在該方法中,您可以檢查滾動視圖的「isDragging」,「isTracking」和/或「isDecelerating」屬性。如果您需要對這些事件進行特殊處理,您還可以覆蓋'willBegin'和'didEnd'進行拖拽和/或減速。 – Arkku

+0

@thuraoo至於如何覆蓋setter,你可以重寫任何方法(記得調用'super'實現)。但它不太必要,我做了很多事情,需要精確地跟蹤滾動視圖的運動,並且代表的「scrollViewDidScroll:」幾乎總是足夠的。 – Arkku