iOS ) ScrollView에서 위아래 Gesture를 감지하고싶다면? / UIGestureRecognizerDelegate
shouldRecognizeSimultaneouslyWith
- return true
- 두 제스처를 동시에 인식하도록 허용한다.
- 제스처 인식기가 롱프레스 라면 동시 인식을 허용하지 않는 코드
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer)
-> Bool {
// If either gesture recognizer is a long press, do not allow
// simultaneous recognition.
if gestureRecognizer is UILongPressGestureRecognizer ||
otherGestureRecognizer is UILongPressGestureRecognizer {
return false
}
return true
}
- return false
- 기본값
- 두 제스처를 동시에 인식할 수 없습니다.
shouldRequireFailureOf
- gesture Recognizer가 다른 gesture Recognizer를 실패 경우, 위임자에게 요청합니다.
shouldBeRequiredToFailBy
- gesture Recognizer가 다른 gesture Recognizer에 의해 실패해야하는 경우 위임자에게 요청합니다.
cancelsTouchesInView
- true
- 기본값
- Gesture Recognizer가 gesture를 인식하면 나머지 터치 정보들을 뷰로 전달하지 않고 이전에 전달된 터치들은 취소됩니다. (touchesCancelled)
- ex) doubleTapGestureRecognizer
- touchesBegan → gesture action → touchesCancelled
- false
- gesture를 인식한 후에도 터치 정보를 뷰에 전달하게 됩니다.
- ex) doubleTapGestureRecognizer
- touchesBegan → gesture action → touchesEnded
delaysTouchesBegan
- true
- recognizer가 패턴을 검사하는 동안에는 터치의 최초 발생 이벤트를 뷰로 전달하지 않고 보류합니다.
- ex) doubleTapGestureRecognizer
- gesture action → X
- false
- 기본값
- ex) doubleTapGestureRecognizer
- touchesBegan → gesture action → touchesCancelled
댓글