Implementing a Custom Gesture Recognizer

Panther·2021년 7월 30일
0

https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/implementing_a_custom_gesture_recognizer

"Discover when and how to build your own gesture recognizers"

고유한 제스쳐 리코그나이저를 빌드하는 적합한 때와 방법에 대해 알아봅니다.

Overview

UIKit에 내장된 제스쳐 리코그나이저가 원하는 동작을 제공하지 못할 때 커스텀 제스쳐 리코그나이저를 정의할 수 있습니다. UIKit은 탭, long-press, 팬, 스와이프, 회전, 핀치에 대한 연속적인 터치를 처리하는 설정 가능한 제스쳐 리코그나이저를 정의합니다. 다른 터치 연속 혹은 버튼 누르기와 관련이 있는 제스쳐를 처리하려면, 커스텀 제스쳐 리코그나이저를 정의할 수 있습니다.

또한, 앱에서 이벤트 처리를 단순화 할 수 있도록 커스텀 제스쳐 리코그나이저를 사용할 수도 있습니다. 예를 들어 드로입 앱 샘플의 Leveraging Touch Input은 입력을 캡처하기 위해 제스쳐 리코그나이저를 사용하고, 이를 화면에 표시합니다. 이에 대한 내용은 Figure 1에서 볼 수 있습니다.

Figure 1 Touch input captured by a custom gesture recognizer

커스텀 제스쳐 리코그나이저를 정의하려면, UIGestureRecognizer(혹은 이것의 하위 클래스 중 하나)를 서브클래싱해야 합니다. 소스 파일 상단에 UIGestureRecognizerSubclass.h 헤더 파일(Objective-C의 경우)을 임포트하거나 UIKit.UIGestureRecognizerSubclass 모듈(스위프트의 경우)을 임포트해야 합니다. Listing 1에서 표현한 것과 같습니다. 이 헤더 파일은 커스텀 제스쳐 리코그나이저를 구현하기 위해 오버라이드해야 하는 메소드와 속성을 정의합니다.

Listing 1 Importing the UIGestureRecognizerSubclass behavior

import UIKit
import UIKit.UIGestureRecognizerSubclass

커스텀 서브클래스에서 이벤트를 처리하기 위해 필요한 메소드 무엇이든 구현할 수 있습니다. 예를 들어 만약 제스쳐가 터치 이벤트로 구성된 경우 touchesBegan(:with:), touchesMoved(:with:), touchesEnded(:with:), touchesCancelled(:with:) 메소드를 구현해야 합니다. 제스쳐 리코그나이저의 상태 속성을 업데이트하려면 들어오는 이벤트를 사용해야 합니다. UIKit은 인터페이스에 있는 다른 객체에 대한 상호작용을 조정하기 위해 제스쳐 리코그나이저 상태를 사용합니다.

Topics


Creating Custom Gesture Recognizers

About the Gesture Recognizer State Machine

상태 머신의 상태 및 전환에 대해 알아봅니다. 상태 머신은 제스쳐 리코그나이저의 기반입니다.

https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/implementing_a_custom_gesture_recognizer/about_the_gesture_recognizer_state_machine
https://velog.io/@panther222128/About-the-Gesture-Recognizer-State-Machine

Implementing a Discrete Gesture Recognizer

만약 제스쳐가 특정 패턴과 관련이 있다면, 이를 위해 이산적 제스쳐 리코그나이저 구현을 고려해보시기 바랍니다.

https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/implementing_a_custom_gesture_recognizer/implementing_a_discrete_gesture_recognizer
https://velog.io/@panther222128/Implementing-a-Discrete-Gesture-Recognizer

Implementing a Continuous Gesture Recognizer

특정 패턴에 일치하기 어려운 제스쳐를 구현하려고 하거나 터치 입력을 모으기 위한 제스쳐 리코그나이저 사용을 원할 때, 연속적 제스쳐 리코그나이저를 생성하시기 바랍니다.

https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/implementing_a_custom_gesture_recognizer/implementing_a_continuous_gesture_recognizer
https://velog.io/@panther222128/Implementing-a-Continuous-Gesture-Recognizer

See Also


Custom Gestures

UIGestureRecognizer

구체화된 제스쳐 리코그나이저들의 베이스 클래스입니다.

https://developer.apple.com/documentation/uikit/uigesturerecognizer
https://velog.io/@panther222128/UIGestureRecognizer


0개의 댓글