Swift 3 프로젝트의 UIImageView 항목에 대한 사용자 지정 경로 애니메이션을 사용하고 있습니다. 다음과 같이 코드의 개요는 다음과 같습니다애니메이션 UIImageView의 탭 감지
ONTAP 방법은 표준 방법으로 선언// parentView and other parameters are configured externally
let imageView = UIImageView(image: image)
imageView.isUserInteractionEnabled = true
let gr = UITapGestureRecognizer(target: self, action: #selector(onTap(gesture:)))
parentView.addGestureRecognizer(gr)
parentView.addSubview(imageView)
// Then I set up animation, including:
let animation = CAKeyframeAnimation(keyPath: "position")
// .... eventually ....
imageView.layer.add(animation, forKey: nil)
:
func onTap(gesture:UITapGestureRecognizer) {
print("ImageView frame is \(self.imageView.layer.visibleRect)")
print("Gesture occurred at \(gesture.location(in: FloatingImageHandler.parentView))")
}
문제는 내가 addGestureRecognizer를 호출 할 때마다, 이전 제스처 인식기가 덮어 쓰기됩니다 것을
, 그래서 어떤 탐지 된 탭은 항상 마지막에 추가 된 이미지를 가리키고 위치는 정확하게 감지되지 않습니다. 따라서 누군가가 parentView에서 아무 곳이나 두 드리면 여전히 onTap 메소드가 트리거됩니다.
이미지 뷰당 정확히 탭을 감지 할 수 있습니까? UIView.animate 또는 다른 메서드를 사용자 지정 경로 애니메이션 요구 사항으로 사용할 수 없으며 이러한 "부동 소수점"이 이벤트를 삼키지 않도록 부모 뷰를 덮을 투명 UIView를 만들 수도 없습니다.
하위 클래스를 구현했지만 때때로 작동하지 않습니다. 버튼이 클릭되었음을 알지 못하지만 때로는 보이지 않습니다. 이것은 내 질문입니다 : https://stackoverflow.com/questions/46391003/retrieve-tapped-uibutton-in-a-moving-uibezierpath –