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

SlideOut-Navigation mit SWRevealController

Wer eine SlideOut Navigation in Swift einsetzen möchte, der kann auf das Projekt von John Lluch zurückgreifen. Das ist zwar in Objective-C geschrieben, kann allerdings – wie jeder Objective-C Code – via Bridging-Header eingebunden werden. Der Code selbst ist sehr gut dokumentiert und lesbar. Zusätzlich können im Issue-Bereich eigene Frage gestellt werden (die nach eigener Erfahrung sehr schnell beantwortet werden).

Das fertige Menü:
finished-swrevealviewcontroller-menu
SlideOut-Navigation mit SWRevealController weiterlesen