2017-03-09 16 views
2

3D 터치 스크린 압력 기능 (예 : touch.force)을 사용하려는 작은 프로젝트에서 작업하고 있습니다. 내가 원하는처럼UICollectionView : 셀의 탭에서 힘을 측정하십시오.

지금은 내의 ViewController에서 힘을 측정 할 수 있으며 행동한다 : 나는 그림을 제시 한 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

글쎄, 내가 이틀 후에 배운 바로는 :'touchesMoved'는 UICollectionView에서도 구현할 수있는 유효한 UIView 메소드입니다. 나는 ViewController만이 touchesBegan 메소드를 오버 라이딩 할 수 있다는 것을 인식하지 못했습니다. – Kevin

답변

0

분명히 override func touches... 메서드는 UIView의 일부이며, 반드시 UIViewController가 아닙니다. 즉 touchesMoved 및 다른 메서드를 내 사용자 지정 UICollectionView에 구현하는 것이 완벽하게 가능하며 동시에 터치 및 탭을 처리하는 문제가 해결되었습니다.