Um zu erkennen, ob ein User lange mit dem Finger in einer View (z.B. auf einer Map) gedrückt hat, bietet Swift den Tap Gesture Recognizer
bzw. den Long Press Gesture Recognizer
. Der Recognizer kann entweder über das Storyboard eingebunden oder direkt im Code erstellt werden.
Storyboard:
Im Storyboard kann der Recognizer über die Objekt Bibliothek einfach in eine View reingezogen und via IBActions genutzt werden:
@IBAction func tapped(sender: UITapGestureRecognizer) { print("Kurzer Drücker") }
@IBAction func longPressed(sender: UILongPressGestureRecognizer) { print("Langer Drücker") }
Im Code
(Am Beispiel einer MapKitView)
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.handleLongPress(_:))) longPressRecognizer.minimumPressDuration = 2.0 // self.map = @IBOutlet weak var map: MKMapView! self.map.addGestureRecognizer(longPressRecognizer) func handleLongPress(gestureRecognizer: UIGestureRecognizer) { // Consider the states (.Began,.Ended, ...) otherwise the code will be execute multiple times if( gestureRecognizer.state == UIGestureRecognizerState.Began ) { print("So it begins ...") } else if( gestureRecognizer.state == UIGestureRecognizerState.Ended ) { print("So it ends ...") } }