Gesture Recognizer
제스처 인식기는
여러 제스처 관련 이벤트를 인식할 수 있다.
특정 제스처 이벤트가 일어날 때마다
각 타깃에 맞는 액션 메시지를 보내어 제스처 관련 이벤트를 처리할 수 있다.
UIGestureRecognizer class
UIGestureRecognizer 클래스는
특정 제스처 인식기에 대한 동작을 정의한다.
델리게이트 객체를 활용하여 일부 동작을 더욱 세밀하게 사용자화 할 수 있다.
UIGestureRecognizer subclass
7가지의 UIGestureRecognizer 하위 클래스를 통해 여러 제스처를 인식할 수 있다.
제스처 인식기를 사용하기 위해 타깃-액션 연결을 설정한 후
UIView의 메서드인 addGestureRecognizer(_:) 메서드를 통해 뷰에 연결한다.
제스처가 인식되면 해당 제스처 이벤트에 연결된 타깃에 액션 메시지가 전달된다.
호출되는 액션메서드는 아래의 메서드 구현 형식 중 하나와 같아야 한다.
@IBAction func myActionMethod()
@IBAction func myActionMethod(_ sender: UIGestureRecognizer)
윈도우는 뷰에 터치 이벤트를 전달하기 전에 뷰에 추가된 제스처 인식기에 터치 이벤트를 전달한다.
제스처 인식기가 터치 이벤트를 인식했을 경우 뷰는 터치 이벤트를 받지 못하고,
제스처 인식기가 터치 이벤트를 인식하지 못했을 경우 터치 이벤트를 뷰가 받게 된다.
일반적인 제스처 인식기의 동작의 흐름은
cancelsTouchesInView
, delaysTouchesBegan
, delaysTouchesEnded
프로퍼티의 값에 영향을 받는다.
Main method of UIGestureRecognizer
Main property of UIGestureRecognizer
cf.
cancelsTouchInView 가 true(기본값)이고 제스처 인식기가 제스처를 인식했다면,
해당 제스처의 터치는 뷰로 전달되지 않는다.
이전에 전달된 터치들은 touchesCancelled(_:with:) 메시지를 통해 취소된다.
제스처 인식기가 제스처를 인식 못하거나 이 프로퍼티의 값이 false라면 뷰가 모든 터치를 전달받게 된다.
📚 Reference
UIGestureRecognizer
boostcourse - iOS 앱 프로그래밍