iOS
UIGestureRecognizer
Suche…
UITapGestureRecognizer
Initialisieren Sie den UITapGestureRecognizer mit einem Ziel, in diesem Fall self , und einer action der es sich um eine Methode mit einem einzigen Parameter handelt: einem UITapGestureRecognizer .
Fügen Sie nach der Initialisierung es der Ansicht hinzu, in der es Taps erkennen soll.
Schnell
override func viewDidLoad() {
super.viewDidLoad()
let recognizer = UITapGestureRecognizer(target: self,
action: #selector(handleTap(_:)))
view.addGestureRecognizer(recognizer)
}
func handleTap(recognizer: UITapGestureRecognizer) {
}
Ziel c
- (void)viewDidLoad {
[super viewDidLoad];
UITapGestureRecognizer *recognizer =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleTap:)];
[self.view addGestureRecognizer:recognizer];
}
- (void)handleTap:(UITapGestureRecognizer *)recognizer {
}
Beispiel für die Entlassung der Tastatur durch UITapGestureRecognizer:
Zuerst erstellen Sie die Funktion zum Entfernen der Tastatur:
func dismissKeyboard() {
view.endEditing(true)
}
Dann fügen Sie in Ihrem View-Controller eine Tipp-Gestenerkennung hinzu und rufen die gerade erstellte Methode auf
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
view.addGestureRecognizer(tap)
Beispiel für das Abrufen der Gestenposition UITapGestureRecognizer (Swift 3):
func handleTap(gestureRecognizer: UITapGestureRecognizer) {
print("tap working")
if gestureRecognizer.state == UIGestureRecognizerState.recognized
{
print(gestureRecognizer.location(in: gestureRecognizer.view))
}
}
UIPanGestureRecognizer
Pan-Gestenerkenner erkennen Ziehbewegungen. Im folgenden Beispiel wird einem View-Controller ein Bild hinzugefügt, und der Benutzer kann es auf dem Bildschirm ziehen.
Ziel c
- (void)viewDidLoad {
[super viewDidLoad];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imageToDrag"]];
[imageView sizeToFit];
imageView.userInteractionEnabled = YES;
[self.view addSubview:imageView];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[imageView addGestureRecognizer:pan];
}
- (void)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointZero inView:self.view];
}
Schnell
override func viewDidLoad() {
super.viewDidLoad()
let imageView = UIImageView.init(image: UIImage.init(named: "imageToDrag"))
imageView.sizeToFit()
imageView.isUserInteractionEnabled = true
self.view.addSubview(imageView)
let pan = UIPanGestureRecognizer.init(target: self, action: #selector(handlePan(recognizer:)))
imageView.addGestureRecognizer(pan)
}
func handlePan(recognizer: UIPanGestureRecognizer) {
let translation = recognizer.translation(in: self.view)
if let view = recognizer.view {
view.center = CGPoint(x: view.center.x + translation.x, y: view.center.y + translation.y)
}
recognizer.setTranslation(CGPoint.zero, in: self.view)
}
Hinweis: Obwohl
UIPanGestureRecognizerzum Erkennen vonUIPanGestureRecognizernützlich ist, verwenden SieUIPanGestureRecognizer, wenn Sie nur eine grundlegende Geste wieUISwipeGestureRecognizer.UIPanGestureRecognizerist die bessere Wahl, wenn Sie auf Methoden wietranslationInView:odervelocityInView:zugreifen möchten.
UITapGestureRecognizer (Doppeltipp)
Beim Doppeltippen wird wie beim einfachen Tippen auch der UITapGestureRecognizer . Sie setzen einfach numberOfTapsRequired auf 2 .
Schnell
override func viewDidLoad() {
super.viewDidLoad()
// Double Tap
let doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTap))
doubleTapGesture.numberOfTapsRequired = 2
doubleTapView.addGestureRecognizer(doubleTapGesture)
}
// Double tap action
func handleDoubleTap() {
label.text = "Double tap recognized"
}
Anmerkungen
- Ein Beispielprojekt finden Sie hier .
- Sie könnten ein dreifaches
numberOfTapsRequired, indem SienumberOfTapsRequiredauf3.
UILongPressGestureRecognizer
Mit dem UILongPressGestureRecognizer können Sie lange auf eine Ansicht drücken. Sie können die Verzögerung einstellen, bevor die Aktionsmethode aufgerufen wird.
Schnell
override func viewDidLoad() {
super.viewDidLoad()
// Long Press
let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress(_:)))
longPressView.addGestureRecognizer(longPressGesture)
}
// Long press action
func handleLongPress(gesture: UILongPressGestureRecognizer) {
if gesture.state == UIGestureRecognizerState.Began {
label.text = "Long press recognized"
}
}
Anmerkungen
Ein ausführlicheres Beispielprojekt finden Sie hier .
Ändern Sie die
minimumPressDuration, um die Länge des langenminimumPressDuration.
UISwipeGestureRecognizer
Mit Wischgesten können Sie darauf achten, wie der Benutzer den Finger schnell in eine bestimmte Richtung über den Bildschirm bewegt.
Schnell
override func viewDidLoad() {
super.viewDidLoad()
// Swipe (right and left)
let swipeRightGesture = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(_:)))
let swipeLeftGesture = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(_:)))
swipeRightGesture.direction = UISwipeGestureRecognizerDirection.Right
swipeLeftGesture.direction = UISwipeGestureRecognizerDirection.Left
swipeView.addGestureRecognizer(swipeRightGesture)
swipeView.addGestureRecognizer(swipeLeftGesture)
}
// Swipe action
func handleSwipe(gesture: UISwipeGestureRecognizer) {
label.text = "Swipe recognized"
// example task: animate view off screen
let originalLocation = swipeView.center
if gesture.direction == UISwipeGestureRecognizerDirection.Right {
label.text = "Swipe right"
} else if gesture.direction == UISwipeGestureRecognizerDirection.Left {
label.text = "Swipe left"
}
}
Ziel c
- (void)viewDidLoad
{
[super viewDidLoad];
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
// Setting the swipe direction.
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
[swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];
// Adding the swipe gesture on image view
[self.view addGestureRecognizer:swipeLeft];
[self.view addGestureRecognizer:swipeRight];
}
//Handling Swipe Gesture Events
- (void)handleSwipe:(UISwipeGestureRecognizer *)swipe {
if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) {
NSLog(@"Left Swipe");
}
if (swipe.direction == UISwipeGestureRecognizerDirectionRight) {
NSLog(@"Right Swipe");
}
}
Anmerkungen
- Ein ausführlicheres Projektbeispiel finden Sie hier .
UIPinchGestureRecognizer
Prisen sind eine Zwei-Finger-Geste, bei der sich die Finger näher oder weiter voneinander bewegen. Diese Geste wird im Allgemeinen zum Ändern der Größe einer Ansicht verwendet.
Schnell
override func viewDidLoad() {
super.viewDidLoad()
// Pinch
let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(handlePinch(_:)))
pinchView.addGestureRecognizer(pinchGesture)
}
// Pinch action
func handlePinch(gesture: UIPinchGestureRecognizer) {
label.text = "Pinch recognized"
if gesture.state == UIGestureRecognizerState.Changed {
let transform = CGAffineTransformMakeScale(gesture.scale, gesture.scale)
pinchView.transform = transform
}
}
Anmerkungen
- Ein ausführlicheres Projektbeispiel finden Sie hier .
UIRotationGestureRecognizer
Mit dem UIRotationGestureRecognizer können zwei Finger um ein Zentrum herum UIRotationGestureRecognizer . Dies wird im Allgemeinen zum Drehen einer Ansicht verwendet.
Schnell
override func viewDidLoad() {
super.viewDidLoad()
// Rotate
let rotateGesture = UIRotationGestureRecognizer(target: self, action: #selector(handleRotate(_:)))
rotateView.addGestureRecognizer(rotateGesture)
}
// Rotate action
func handleRotate(gesture: UIRotationGestureRecognizer) {
label.text = "Rotate recognized"
if gesture.state == UIGestureRecognizerState.Changed {
let transform = CGAffineTransformMakeRotation(gesture.rotation)
rotateView.transform = transform
}
}
Anmerkungen
- Ein Beispielprojekt finden Sie hier .
Hinzufügen einer Gestenerkennung im Interface Builder
Ziehen Sie eine Gestenerkennung aus der Objektbibliothek in Ihre Ansicht.
Ziehen Sie die Steuerung von der Geste in der Dokumentgliederung in Ihren View Controller-Code, um einen Auslass und eine Aktion zu erstellen.
Anmerkungen
- Dieses Beispiel stammt aus diesem umfassenderen Beispielprojekt, das Gestenerkennungsfunktionen demonstriert.

