2017-03-09 9 views
2

私は3Dタッチスクリーンの圧力機能(例:touch.force)を使いたい小さなプロジェクトに取り組んでいます。私はそれをしたいようUICollectionView:セルのタップの力を測定する

今、私は私のViewControllerに力を測定することができ、それが動作している:私は絵を提示1 UIImageViewを持って

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) 
      } 
     } 
    } 

。透明なセルと有色のセルを含むオーバレイとしてカスタムUICollectionViewも使用します。私が達成しようとしているのは、両方の力を測定し、押されたときに細胞の色を取り除くことができるようにすることですが、私は両方を行うことに失敗しています。力を測定するか、UICollectionViewのセルの色を変更することができますが、両方を行うことはできません。

解決策は、UICollectionViewのtouchesを階層の次のビューに転送することです。しかし、別の解決策は、カスタム内のセルの力およびレジスタタップの両方を測定することであり得る。UICollectionView

私の質問は、私の提案されたソリューションのいずれかが良いですか?もしそうなら、どのように達成するのですか?

+0

2日後に私が学んだのは、 'touchesMoved'はUICollectionViewでも実装できる有効なUIViewメソッドです。私は、ViewControllerだけが 'touchesBegan'メソッドをオーバーライドできることを認識していませんでした。 – Kevin

答えて

0

明らかに、override func touches...のメソッドは、UIViewの一部であり、必ずしもUIViewControllerではありません。これは、私のカスタムUICollectionViewにtouchesMovedと他のメソッドを実装することは完全に可能であり、同時にタッチとタップを処理するという私の問題を解決したことを意味します。

関連する問題