Handling Tap Gestures

Panther·2021년 7월 30일
0
post-custom-banner

https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/handling_uikit_gestures/handling_tap_gestures

"Use brief taps on the screen to implement button-like interactions with your content."

컨텐트에서 버튼과 같은 상호작용을 구현하기 위해 스크린에서의 짧은 탭을 사용합니다.

Overview

탭 제스처는 스크린을 짧게 터치하는 하나 혹은 하나 이상의 손가락을 감지합니다. 이 제스처를 수행한 손가락들은 초디 터치 지점으로부터 유의한 수준으로 움직이지 않아야 하고, 손가락이 스크린을 터치해야 하는 수를 설정할 수 있습니다. 예를 들어 탭 제스처 리코그나이저가 싱글 탭, 더블 탭, 트리플 탭을 감지할 수 있도록 설정할 수 있습니다.

제스처 리코그나이저는 아래에 나와있는 방법 중 한 가지를 통해 구현할 수 있습니다.

  • 코드 작성 방법입니다. 뷰의 addGestureRecognizer(_:) 메소드를 호출합니다.
  • 인터페이스 빌더에서 구현하는 방법입니다. 라이브러리로부터 적합한 객체를 드래그하고, 뷰에 드롭합니다.

UITapGestureRecognizer 객체는 버튼의 이벤트 처리 기능과 유사한 이벤트 처리 기능을 제공합니다. 뷰에 대한 탭을 감지하고, 액션 메소드에 해당 탭을 보고합니다. 탭 제스처는 이산적입니다. 그렇기 때문에 액션 메소드는 탭 제스처가 성공적으로 인식되었을 때에만 호출됩니다. 탭의 횟수를 요구하는 탭 제스쳐 리코그나이저를 설정할 수도 있습니다. 예를 들어 액션 메소드가 호출되기 전의 싱글 탭 혹은 더블 탭이 있습니다.

Listing 1은 뷰에서 성공적인 탭에 반응하는 액션 메소드를 보여줍니다. 뷰는 새로운 위치로 애니메이션 처리됩니다. 항상 어떤 액션을 수행하기 전에 제스처 리코그나이저의 상태 속성을 확인해야 합니다. 이는 이산적 제스쳐 리코그나이저에서도 그렇습니다.

Listing 1 Handling a tap gesture

@IBAction func tapPiece(_ gestureRecognizer : UITapGestureRecognizer ) {
   guard gestureRecognizer.view != nil else { return }
        
   if gestureRecognizer.state == .ended {      // Move the view down and to the right when tapped.
      let animator = UIViewPropertyAnimator(duration: 0.2, curve: .easeInOut, animations: {
         gestureRecognizer.view!.center.x += 100
         gestureRecognizer.view!.center.y += 100
      })
      animator.startAnimation()
   }}

탭 제스쳐 리코그나이저를 위한 코드가 호출되지 않는다면, 아래 조건이 true인지 확인하고, 필요한 경우 수정하시기 바랍니다.

  • 뷰의 isUserInteractionEnabled 속성이 true로 설정되어 있는지 확인합니다. 이미지 뷰와 레이블은 이 속성이 기본값으로 false입니다.
  • 탭의 횟수가 numberOfTapsRequired에서 구체화된 숫자가 일치하는지 확인해야 합니다.
  • 손가락의 수가 numberOfTouchesRequired에서 구체화된 수와 일치하는지 확인해야 합니다.
post-custom-banner

0개의 댓글