Recherche…


UITapGestureRecognizer

Initialisez UITapGestureRecognizer avec une cible, self dans ce cas, et une action qui est une méthode avec un seul paramètre: un UITapGestureRecognizer .

Après l'initialisation, ajoutez-le à la vue pour qu'il reconnaisse les taps.

Rapide

override func viewDidLoad() {
    super.viewDidLoad()
    let recognizer = UITapGestureRecognizer(target: self,
                                            action: #selector(handleTap(_:)))
    view.addGestureRecognizer(recognizer)
}

func handleTap(recognizer: UITapGestureRecognizer) {

}

Objectif c

- (void)viewDidLoad {
    [super viewDidLoad];
    UITapGestureRecognizer *recognizer =
        [[UITapGestureRecognizer alloc] initWithTarget:self
                                                action:@selector(handleTap:)];
    [self.view addGestureRecognizer:recognizer];
}

- (void)handleTap:(UITapGestureRecognizer *)recognizer {

}  


Exemple de renvoi au clavier via UITapGestureRecognizer:

Tout d'abord, vous créez la fonction de rejet du clavier:

func dismissKeyboard() {
        view.endEditing(true)
    }  

Ensuite, vous ajoutez un identificateur de geste dans votre contrôleur de vue, en appelant la méthode que nous venons de créer.

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
        view.addGestureRecognizer(tap)

Exemple d'obtention de l'emplacement de geste UITapGestureRecognizer (Swift 3):

func handleTap(gestureRecognizer: UITapGestureRecognizer) {
print("tap working")
if gestureRecognizer.state == UIGestureRecognizerState.recognized
   {
     print(gestureRecognizer.location(in: gestureRecognizer.view))
   }
}

UIPanGestureRecognizer

Les détecteurs de mouvements de panoramique détectent les mouvements de déplacement. L'exemple suivant ajoute une image à un contrôleur de vue et permet à l'utilisateur de la faire glisser sur l'écran.

Objectif 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];
}

Rapide

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

Remarque: Bien que UIPanGestureRecognizer soit utile pour détecter les UIPanGestureRecognizer de glissement, si vous souhaitez simplement détecter un geste de base tel que faire glisser un doigt de gauche à droite ou de haut en bas, utilisez UISwipeGestureRecognizer . UIPanGestureRecognizer est un meilleur choix si vous avez besoin d'accéder à des méthodes telles que translationInView: ou velocityInView: UIPanGestureRecognizer

UITapGestureRecognizer (Double Tap)

Le double tapotement, comme un simple tapotement, utilise également le UITapGestureRecognizer . Vous définissez simplement le numberOfTapsRequired sur 2 .

Rapide

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

Remarques

  • Un exemple de projet peut être trouvé ici .
  • Vous pouvez reconnaître un triple tap en définissant le numberOfTapsRequired sur 3 .

UILongPressGestureRecognizer

UILongPressGestureRecognizer vous permet d'écouter un UILongPressGestureRecognizer long sur une vue. Vous pouvez définir la durée du délai avant l'appel de la méthode d'action.

Rapide

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

Remarques

  • Un exemple de projet plus complet peut être trouvé ici .

  • Changez le minimumPressDuration pour définir la longueur de l' minimumPressDuration long.

UISwipeGestureRecognizer

Les gestes de balayage vous permettent d'écouter l'utilisateur déplacer rapidement son doigt sur l'écran dans une certaine direction.

Rapide

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

Objectif 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");   
    } 

}

Remarques

  • Un exemple de projet plus complet peut être trouvé ici .

UIPinchGestureRecognizer

Les pincements sont un geste à deux doigts où les doigts se rapprochent ou s’éloignent les uns des autres. Ce geste est généralement utilisé pour redimensionner une vue.

Rapide

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
    }
}

Remarques

  • Un exemple de projet plus complet peut être trouvé ici .

UIRotationGestureRecognizer

Deux doigts qui tournent autour d'un centre peuvent être écoutés avec UIRotationGestureRecognizer . Ceci est généralement utilisé pour faire pivoter une vue.

Rapide

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
    }
}

Remarques

  • Un exemple de projet peut être trouvé ici .

Ajout d'un dispositif de reconnaissance de mouvements dans Interface Builder

Faites glisser un identificateur de geste de la bibliothèque d'objets sur votre vue.

Ajout de la capture d'écran de la reconnaissance de geste

Contrôlez le glissement du geste dans la structure du document vers votre code View Controller afin de créer une sortie et une action.

prise de connexion et action screenshot

Remarques



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow