Allowing the Simultaneous Recognition of Multiple Gestures
"Learn how to use a delegate object to allow detection of more than one gesture at a time."
동시에 하나 이상의 제스쳐 감지를 허용할 수 있도록 하는 딜리게이트 사용 방법을 알아봅니다.
Overview
동시에 다중 제스쳐 인식할 수 있도록 하는 것이 합리적일 때가 있습니다. Figure 1은 뷰를 화면에서 드래그, 스케일, 회전하는 것을 허용해주는 앱을 나타내고 있습니다. 각 뷰는 팬, 핀치, 회전 제스쳐 리코그나이저의 고유한 집합을 유지하고 있고, 세 가지 제스쳐의 액션을 동시에 수행하기 위한 세 가지 제스쳐 리코그나이저가 가능합니다.
Figure 1 Dragging, scaling, and rotating an object
하나의 제스쳐 리코그나이저를 동시에 다른 제스쳐와 함께 작동하도록 하려면, gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)
메소드를 구현하고 있는 딜리게이트 객체를 할당해야 합니다. UIKit
은 같은 뷰에 있는 제스쳐 리코그나이저의 쌍에 대해 이 메소드를 호출합니다. true
를 반환하는 것은 두 제스쳐가 동시에 이벤트를 처리할 수 있도록 해줍니다.
Listing 1은 Figure 1에서 볼 수 있는 앱의 gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)
메소드를 나타내고 있습니다. 이 메소드는 제스쳐 리코그나이저들이 같은 뷰에 있을 때 true
를 반환합니다. 만약 제스쳐 리코그나이저들이 다른 뷰에 있거나 하나의 객체가 long press 제스쳐 리코그나이저라면, 이 메소드는 false
를 반환합니다.
Listing 1 Determining when to handle gestures simultaneously
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer)
-> Bool {
// If the gesture recognizer's view isn't one of the squares, do not
// allow simultaneous recognition.
if gestureRecognizer.view != self.yellowView &&
gestureRecognizer.view != self.cyanView &&
gestureRecognizer.view != self.magentaView {
return false
}
// If the gesture recognizers are on diferent views, do not allow
// simultaneous recognition.
if gestureRecognizer.view != otherGestureRecognizer.view {
return false
}
// If either gesture recognizer is a long press, do not allow
// simultaneous recognition.
if gestureRecognizer is UILongPressGestureRecognizer ||
otherGestureRecognizer is UILongPressGestureRecognizer {
return false
}
return true
}
샘플에 대한 더 많은 정보는 Handling Touches Using Responder Methods and Gesture Recognizers를 살펴보시기 바랍니다.
Handling Touches Using Responder Methods and Gesture Recognizers
https://developer.apple.com/library/archive/samplecode/Touches/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007435
Author And Source
이 문제에 관하여(Allowing the Simultaneous Recognition of Multiple Gestures), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@panther222128/Allowing-the-Simultaneous-Recognition-of-Multiple-Gestures저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)