[ iOS 읽기 ] Handling

선적 서류 비치

장시간의 화면 터치를 인식하고 이를 사용하여 상황에 맞는 콘텐츠를 표시합니다.

개요

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

+상황에 맞는 메뉴

상세 메뉴를 표시합니다. 예를 들어 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)   
   }
}

길게 누르기 동작 감지기의 코드가 호출되지 않으면 아래 조건이 충족되는지 확인하십시오. 필요한 경우 편집합니다.

길게 누르기 제스처 처리