- /UIKit
- /터치, 누르기 및 제스처
- /UIKit 제스처 처리
- /길게 누르기 제스처 처리
개요
길게 누르기 또는 길게 누르기라는 동작은 하나 이상의 손가락(또는 스타일러스)이 장시간 동안 화면을 터치하고 있음을 감지합니다. 당신은 언론을 인식해야합니다 최소 기간그리고 화면을 터치해야 손가락의 수조정할 수 있습니다. (움직임 감지는 터치가 지속되는 동안에만 트리거되며 누르는 힘과는 무관합니다.) 길게 누르는 제스처를 사용하여 누른 개체에 대한 동작을 트리거할 수도 있습니다. 예를 들어 당신 콘텐츠 종속 메뉴를 보려면 길게 누르세요.당신은 할 수 있습니다.
+상황에 맞는 메뉴
상세 메뉴를 표시합니다. 예를 들어 Xcode Source Control을 누르면 Commit 및 Push와 같은 상황에 맞는 메뉴가 있습니다. 모바일 장치에는 콘텐츠 인식 메뉴가 있습니다. B. iOS 앱을 길게 누를 때 나타나는 앱을 제거합니다.

다음 방법 중 하나를 사용하여 제스처 인식기를 연결할 수 있습니다.
- 프로그래밍 방법. 의견 addGestureRecognizer(_:) 방법경제적 지원
- 인터페이스 빌더. 라이브러리에서 적절한 개체를 끌어 뷰에 놓습니다. (+스토리보드 사용시)
+ 인터페이스 빌더
Xcode에 포함된 편집기인 Interface Builder를 사용하여 코드를 작성하지 않고 애플리케이션에 대한 인터페이스를 생성합니다.

긴 인쇄는 연속적인 프로세스입니다. 즉, 상태가 변경될 때 작업 메서드를 여러 번 호출할 수 있습니다. 사람의 손가락이 최소한의 시간 동안 화면을 터치한 후 길게 누르기 제스처 인식이 활성화됩니다. UIGestureRecognizer.State.began 손가락이 움직이거나 만졌을 때 다른 변화가 발생하면 동작 감지기가 상태에 들어갑니다. UIGestureRecognizer.State.변경됨 상태 변경 이 제스처 인식기는 손가락이 설정된 보기 밖으로 이동하더라도 손가락이 아래에 있는 동안 UIGestureRecognizer.State.changed 상태를 유지합니다. 사람의 손가락을 화면에서 떼면 동작 감지가 활성화됩니다. UIGestureRecognizer.State.ended 상태를 입력
다음 코드는 뷰 상단에 컨텍스트 메뉴를 표시하는 작업 메서드를 보여줍니다. 이 코드는 사람의 손가락이 화면에 있는 동안 작업 시작 부분(.began)에 화면 컨텍스트 메뉴를 표시합니다. 이 메서드를 구현하는 보기 컨트롤러는 자신을 첫 번째 응답자로 설정하여 사용자가 선택한 메뉴 작업에 응답할 수도 있습니다.
@IBAction func showResetMenu(_ gestureRecognizer: UILongPressGestureRecognizer) {
if gestureRecognizer.state == .began {
self.becomeFirstResponder()
self.viewForReset = gestureRecognizer.view
// Configure the menu item to display
let menuItemTitle = NSLocalizedString("Reset", comment: "Reset menu item title")
let action = #selector(ViewController.resetPiece(controller:))
let resetMenuItem = UIMenuItem(title: menuItemTitle, action: action)
// Configure the shared menu controller
let menuController = UIMenuController.shared
menuController.menuItems = (resetMenuItem)
// Set the location of the menu in the view.
let location = gestureRecognizer.location(in: gestureRecognizer.view)
let menuLocation = CGRect(x: location.x, y: location.y, width: 0, height: 0)
menuController.setTargetRect(menuLocation, in: gestureRecognizer.view!)
// Show the menu.
menuController.setMenuVisible(true, animated: true)
}
}
길게 누르기 동작 감지기의 코드가 호출되지 않으면 아래 조건이 충족되는지 확인하십시오. 필요한 경우 편집합니다.
- 의견 isUserInteractionEnabled 속성을 true로 설정. 이미지 보기 및 주석의 경우 이 속성은 기본적으로 false로 설정됩니다.
- 팁 기간 최소 프레스 기간 속성에 지정된 것~보다 큰
- 탭의 수 numberOfTaps필수 속성에 지정된 숫자와 똑같은 것.
- 손가락의 수 numberOfTouches필수 속성에 지정된 숫자 및 똑같은 것.

