[swift] 멀티 터치 감지를 위한 UIPinchGestureRecognizer 사용법

이번 블로그 포스트에서는 Swift에서 멀티 터치 감지를 위해 UIPinchGestureRecognizer를 사용하는 방법을 알아보겠습니다.

UIPinchGestureRecognizer는 사용자가 두 손가락으로 확대 또는 축소 동작을 했을 때 이를 감지하는 제스처 인식기입니다.


UIPinchGestureRecognizer 클래스 생성

먼저, UIPinchGestureRecognizer 클래스의 인스턴스를 생성해야 합니다. 일반적으로 이를 뷰 컨트롤러 내에서 생성하고 추가합니다.

let pinchGestureRecognizer = UIPinchGestureRecognizer(target: self, action: #selector(handlePinch))
view.addGestureRecognizer(pinchGestureRecognizer)

target은 제스처 이벤트 발생 시 호출할 메서드가 포함된 객체입니다. 이 예제에서는 현재 뷰 컨트롤러를 사용하고 있으므로 self를 전달합니다. action은 호출할 메서드를 선택합니다. 위의 예제에서는 handlePinch() 메서드를 호출합니다.

제스처 이벤트 처리

뷰 컨트롤러 내에 handlePinch() 메서드를 추가하여 제스처 이벤트를 처리합니다.

@objc func handlePinch(_ gestureRecognizer: UIPinchGestureRecognizer) {
    if gestureRecognizer.state == .began {
        // 줌 시작
        // 필요한 로직을 작성하세요
    }
    
    if gestureRecognizer.state == .changed {
        // 줌 변경
        let scale = gestureRecognizer.scale
        // 필요한 로직을 작성하세요
    }
    
    if gestureRecognizer.state == .ended {
        // 줌 종료
        // 필요한 로직을 작성하세요
    }
}

gestureRecognizer.state는 현재 제스처의 상태를 나타내는 속성입니다. began은 제스처가 시작되었음을 나타내며, changed는 실시간으로 제스처 변경사항을 감지하고, ended는 제스처가 종료되었음을 나타냅니다.


그럼 이제 멀티 터치 감지를 위해 UIPinchGestureRecognizer를 사용하는 방법에 대해 알아보았습니다. 이를 사용하여 사용자가 화면을 확대 또는 축소하는 동작을 쉽게 감지하고 관리할 수 있습니다.

참고 링크