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