Long Press Gesture einsetzen

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 ...")
  }
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert