Computer >> 컴퓨터 >  >> 프로그래밍 >> iOS

iOS에서 길게 누르기(Long Press) 제스처 감지하는 완벽 가이드

길게 누르기 제스처란?

길게 누르기(Long-press, press-and-hold) 제스처는 하나 이상의 손가락이 화면을 일정 시간 이상 터치하고 있는 동작을 감지하는 기능입니다. 개발자는 제스처를 인식하기 위한 최소 지속 시간과 화면에 닿아야 하는 손가락의 수를 직접 설정할 수 있습니다. 단, 제스처 인식기는 터치의 강도(force)가 아닌 터치의 지속 시간에만 반응한다는 점에 유의하세요.

길게 누르기 제스처는 주로 눌린 객체에 대한 특정 동작을 실행할 때 활용됩니다. 대표적인 예로 컨텍스트 메뉴(context menu)를 표시하는 경우가 있습니다.

더 자세한 내용은 Apple 공식 문서에서 확인할 수 있습니다:
https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/handling_uikit_gestures/handling_long-press_gestures

이번 튜토리얼에서는 버튼을 일정 시간 동안 길게 눌렀을 때 알림(Alert)을 표시하는 간단한 앱을 만들어 보겠습니다.

프로젝트 시작하기

그럼 바로 시작해 보겠습니다.

1단계 – 프로젝트 생성

Xcode를 실행하고 New Project → Single View Application을 선택한 후, 프로젝트 이름을 "LongPressGesture"로 지정합니다.

2단계 – 버튼 추가 및 IBOutlet 연결

Main.storyboard에 버튼 하나를 추가하고, 해당 버튼의 @IBOutlet을 생성한 뒤 이름을 "btnLongOutlet"으로 설정합니다.

3단계 – UILongPressGestureRecognizer 객체 생성

ViewController.swift 파일을 열고 UILongPressGestureRecognizer 객체를 생성합니다.

var longgesture = UILongPressGestureRecognizer

4단계 – viewDidLoad()에 코드 추가

viewDidLoad() 메서드에 아래 코드를 추가합니다.

longgesture = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.longPress(_:)))
longgesture.minimumPressDuration = 2
btnLongOutlet.addGestureRecognizer(longgesture)

여기서 minimumPressDuration 값을 2로 설정하면, 사용자가 버튼을 2초 이상 눌러야 제스처가 인식됩니다.

5단계 – longPress 함수 구현

longPress 함수를 생성하고 다음 코드를 작성합니다.

@objc func longPress(_ sender: UILongPressGestureRecognizer) {
    let alertController = UIAlertController(title: "Long Press", message:
        "Long Press Gesture Detected", preferredStyle: .alert)
    alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
    present(alertController, animated: true, completion: nil)
}

제스처가 정상적으로 감지되면 "Long Press Gesture Detected"라는 메시지와 함께 알림창이 화면에 나타납니다.

6단계 – 앱 실행 및 테스트

모든 설정이 끝났습니다! 앱을 빌드하여 실행한 후, 버튼을 2초 동안 꾹 눌러보세요. 알림창이 정상적으로 표시되는 것을 확인할 수 있습니다.

iOS에서 길게 누르기(Long Press) 제스처 감지하는 완벽 가이드