2016-06-01 36 views
0

我有興趣在視圖控制器的視圖中獲取觸摸位置(例如,或者模仿touchesMoved),同時仍然保持啓用UIScrollView子視圖。由於所有touchesDidSomething方法都被UIScrollView消耗,我希望有一個圓滿的方法來實現這一點。在UIScrollView仍然有效的情況下檢測連續觸摸位置

這裏有幾件事情我已經試過:

  • 子類一UIScrollView,重寫它的touchesMoved方法,並把該觸摸信息的custom delegate方法在我scrollView's視圖控制器。 - >如果我在滾動view上取消選擇「可取消內容接觸」和「延遲內容接觸」,但實際上它起作用,但它會阻止滾動view滾動。

  • 使用與上面相同的策略,但將子類型UIView作爲我的UIScrollView的兄弟。因此,層次結構如下:

view UIScrollView Subview Subview CustomUIView < - 定製UIView調用delegate

這兩種方法工作,我可以獲取數據的程度,但在我的滾動的代價查看不再滾動。我知道我可以在類似於touchesBeganUIScrollView中獲取觸摸事件的位置,而scrollView繼續工作,但我還沒有找到在滾動時獲得連續觸摸事件的方法。這可能嗎?

這裏是什麼我的說明後:

enter image description here

對於一些元數據,爲什麼我在尋找這一點,爲什麼抓像012​​的contentOffset.x將無法​​正常工作,我當scrollView已經滾動到結尾(或開始)並且用戶試圖繼續向前(或向後)滑動時,即使scrollView不能再以滑動方向滾動,它也特別感興趣。發生這種情況時,我想檢測向前(或向後)輕掃動作以啓動到另一個視圖的光滑過渡。

+0

如何檢測父視圖上的觸摸,並將觸摸的位置與UIScrollview中添加的子視圖進行轉換?參考檢查[this](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/doc/uid/TP40006816-CH3-SW52) – iphonic

回答

0

我解決了這個問題,在我的視圖中添加了一個平移手勢識別器,並使用它的translationInView方法(UISwipeGestureRecognizer沒有此方法)。下面

let panGesture = UIPanGestureRecognizer(target: self, action: #selector(myMethod(_:))) 
panGesture.delegate = self 
self.addGestureRecognizer(panGesture) 

func myMethod(sender: UIPanGestureRecognizer) { 
    // sender.translationInView(self).x 
} 

例子也確保在UIGestureRegognizerDelegateshouldRecognizeSimultaneouslyWithGestureRecognizer返回true佔了滾動。

相關問題