[번역] Handling UIKit gestures (애플 공식 문서)

삭제된 Velog·2024년 11월 26일

UIKit

목록 보기
16/21
post-thumbnail

본 글은 Handling UIKit gestures (애플 공식 문서)를 한국어로 번역하여 옮긴 글입니다.

터치 처리를 간편하게 하고 일관된 사용자 경험 생성을 위해 제스처 인식기(gesture recognizer)를 사용하세요.


Overview

제스처 인식기는 뷰에서 터치나 누르기(press) 이벤트를 처리하는 가장 쉬운 방법입니다. 어느 뷰에나 하나 이상의 제스처 인식기를 붙일 수 있습니다. 제스처 인식기는 뷰에서 들어오는 이벤트를 해석하고 처리를 필요로 하는 모든 로직을 캡슐화하고 이를 알려진 패턴에 맞춥니다. 패턴이 감지되면, 제스처 인식기는 할당된 타겟(target) 객체에게 알려주며, 해당 객체는 뷰 컨트롤러, 뷰 자체 또는 앱의 다른 객체가 될 수 있습니다.

제스처 인식기는 알림을 보내기 위해 타겟-액션 디자인 패턴을 사용합니다. UITapGestureRecognizer 객체가 뷰에서 한 손가락 탭을 감지하면, 응답을 제공하는 데 사용하는 뷰의 뷰 컨트롤러의 액션 메서드를 호출합니다.

제스처 인식기는 이산형(discrete)연속형(continuous)라는 두 가지 타입이 있습니다. 이산형 제스처 인식기는 제스처가 인식된 후에 딱 한번만 액션 메서드를 호출합니다. 연속형 제스처 인식기는 처음 인식 기준을 충족하면 제스처의 이벤트 정보가 바뀔 때마다 이를 알려 액션 메서드를 여러 번 호출할 수 있습니다. 예를 들어, UIPanGestureRecognizer 객체는 터치 위치가 바뀔 때마다 액션 메서드를 호출합니다.

인터페이스 빌더는 표준 UIKit 제스처 인식기 각각에 대한 객체가 포함되어 있습니다. 또한, 사용자화 UIGestureRecognizer 서브클래스를 구현하는 데 사용할 수 있는 사용자화 제스처 인식기 객체도 포함되어 있습니다.

Confuguring a gesture recognizer

제스처 인식기를 구성하려면

  1. 스토리보드에서 제스처 인식기를 뷰로 드래그하세요.

  2. 제스처가 인식되면 호출될 액션 메서드를 구현하세요.

  3. 제스처 인식기와 액션 메서드를 연결하세요.

인터페이스 빌더에서 제스처 인식기를 오른쪽 클릭하고 Send Action 셀렉터(selector)를 인터페이스의 적절한 객체와 연결하여 연결(connection)을 생성할 수 있습니다. 또한, 제스처 인식기의 addTarget(_:action:) 메서드를 사용하여 코드로 액션 메서드를 구성할 수 있습니다.

아래 코드는 제스처 인식기의 액션 메서드에 대한 일반적인 형식을 보여줍니다. 원하는 경우, 매개변수 타입을 특정 제스처 인식기 서브클래스에 맞도록 수정할 수 있습니다.

@IBAction func myActionMethod(_ sender: UIGestureRecognizer)

Responding to gestures

제스처 인식기와 관련된 액션 메서드는 해당 제스처에 대한 앱의 반응을 제공합니다. 이산형 제스처 인식기의 경우, 액션 메서드는 버튼의 액션 메서드와 유사합니다. 액션 메서드가 호출되면, 해당 제스처에 적합한 작업을 수행합니다. 연속형 제스처 인식기의 경우, 액션 메서드는 제스처의 인식에 반응할 수 있을 뿐만 아니라, 제스처가 인식되기 전의 이벤트도 추적할 수 있습니다. 이벤트 추작언 더욱 인터랙티브(interactive)한 경험을 제공할 수 있습니다. 예를 들어, UIPanGestureRecognizer 객체의 업데이트를 사용하여 앱의 컨텐츠를 재배치할 수 있습니다.

제스처 인식기의 state 프로퍼티는 객체의 현재 인식 상태를 알려줍니다. 연속형 제스처 인식기의 경우, 제스처 인식기는 해당 프로퍼티의 값을 UIGestureRecognizer.State.began, UIGestureRecognizer.State.changed에서 UIGestureRecognizer.State.endedUIGestureRecognizer.State.cancelled로 업데이트합니다. 액션 메서드는 적합한 액션 방향을 결정하기 위해 해당 프로퍼티를 사용합니다.예를 들어, beganchanged 상태에서 컨텐츠에 임시 변경을 가하고, ended 상태에서 해당 변경을 영구적으로 적용하며, cancelled 상태에서 변화를 폐기할 수 있습니다. 액션을 취하기 전 항상 제스처 인식기의 state 프로퍼티의 값을 확인하세요.

특정 타입의 제스처를 다루는 방법에 대한 예제는 아래를 참고하세요.

제스처 인식기 상태와 코드에 영향을 끼치는 방식에 대한 자세한 정보는 Implementing a custom gesture recoginzer를 참조하세요.

profile
rlarjsdn3.github.io

0개의 댓글