2017-03-09 96 views
2

我正在研究一個想要使用3D觸摸屏壓力功能的小項目(例如touch.force)。眼下UICollectionView:測量單元水龍頭的力

我可以在我的ViewController測量力和它的行爲就像我希望它:

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { 
     if let touch = touches.first { 
      if traitCollection.forceTouchCapability == UIForceTouchCapability.available { 
       // 3D Touch capable 
       let force = touch.force 
       print("Force: " + force.description) 
      } 
     } 
    } 

我有一個UIImageView呈現的畫面。我還使用自定義UICollectionView作爲疊加層,其中包含透明單元格和彩色單元格。我試圖達到的目的是衡量兩種力量,並且能夠在按下時從單元格中移除顏色,但我無法同時執行這兩種操作。我可以測量強制,或更改UICollectionView中單元格的顏色,但不能同時更改。

我看到的解決方案是將touches從UICollectionView轉發到層次結構中的下一個視圖。但是另一種解決方案可以是測量來自定製UICollectionView內的細胞上的力和註冊水龍頭。

我的問題是,我提出的解決方案有哪些是好的?如果是這樣,我該如何實現它們?

+0

那麼,我在兩天後才知道:'touchesMoved'是一個有效的UIView方法,也可以在UICollectionView中實現。我不知道,只有ViewControllers可以重寫'touchesBegan'等方法。 – Kevin

回答

0

顯然override func touches...方法是UIView的一部分,而不是UIViewControllers。這意味着在我的自定義UICollectionView中實現touchesMoved和其他方法是完全可能的,它解決了我同時處理觸摸和點擊的問題。