1 // Copyright 2015-present 650 Industries. All rights reserved.
2 
3 import UIKit
4 
5 class DevMenuGestureRecognizerDelegate {
6   /**
7     Handler for three-finger long press gesture.
8   */
9   @objc
handleLongPressnull10   public func handleLongPress(_ gestureReconizer: UILongPressGestureRecognizer) {
11     if gestureReconizer.state == UIGestureRecognizer.State.began {
12       if DevMenuManager.shared.toggleMenu() {
13         let feedback = UIImpactFeedbackGenerator(style: .light)
14         feedback.prepare()
15         feedback.impactOccurred()
16       }
17       cancelGesture(gestureReconizer)
18     }
19   }
20 
21   /**
22    Use a trick that cancels a gesture.
23   */
cancelGesturenull24   private func cancelGesture(_ gestureReconizer: UILongPressGestureRecognizer) {
25     gestureReconizer.isEnabled = false
26     gestureReconizer.isEnabled = true
27   }
28 }
29 
30 class DevMenuGestureRecognizer: UILongPressGestureRecognizer {
31   static fileprivate let gestureDelegate = DevMenuGestureRecognizerDelegate()
32 
33   init() {
34     super.init(target: DevMenuGestureRecognizer.gestureDelegate, action: #selector(DevMenuGestureRecognizer.gestureDelegate.handleLongPress(_:)))
35 
36     numberOfTouchesRequired = 3
37     minimumPressDuration = 0.5
38     allowableMovement = 30
39   }
40 }
41