2010-11-25 76 views
35

Dans mon application iPhone, je dois reconnaître le mouvement de balayage effectué par l'utilisateur sur la vue.Comment détecter Swipe Gesture dans iPhone SDK?

Je veux que les gestes swipe à reconnaître et exécuter une fonction sur swipe.

J'ai besoin que la vue doit glisser horizontalement et montrer une autre vue comme un utilisateur fait un geste de balayage.

Que faut-il faire?

Comment le reconnaître?

Toutes les directions ou des tutoriels seront vraiment appréciés.

Répondre

41

Utilisez le UISwipeGestureRecognizer. Pas grand-chose à dire vraiment, les reconnaisseurs de gestes sont faciles. Il y a même WWDC10 videos sur le sujet. Sessions 120 et 121. :)

+1

merci pour votre contribution. Pouvez-vous s'il vous plaît donner une démo ou un tutoriel pour cela? Je suis un débutant. Merci –

+10

Je peux, mais je préférerais que vous regardiez les vidéos WWDC10, les deux séances que j'ai décrites. Ils vous apprendront tout ce que vous devez savoir sur les reconnaisseurs de gestes en 2 heures. Beaucoup plus efficacement que je pourrais le faire ici. J'ai mis à jour ma réponse pour fournir un lien vers les vidéos. – jer

+1

Merci beaucoup! :) –

45

Si vous savez comment cela fonctionne, mais encore besoin d'un exemple rapide, voilà! (Il deviendra pratique au moins pour moi, quand je aurai besoin par exemple de copier-coller, sans essayer en souvenir)

UISwipeGestureRecognizer *mSwipeUpRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething)]; 

[mSwipeUpRecognizer setDirection:(UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)]; 

[[self view] addGestureRecognizer:mSwipeUpRecognizer]; 

et ajouter des fichiers .h:

<UIGestureRecognizerDelegate> 
+11

+1 pour l'exemple de code –

+0

merci. ... Excellent travail;) – Abdu

+0

[version mSwipeUpRecognizer]; n'est pas nécessaire depuis la sortie de l'ARC, vous devez éditer votre réponse. Indépendamment de +1 pour votre réponse. –

-1

Le lien suivant ci-dessous réoriente vous un tutoriel vidéo qui vous explique comment détecter swipes sur l'iPhone dans Objective-C:

UISwipeGestureRecognizer Tutorial (Detecting swipes on the iPhone)

Exemple de code ci-dessous, pour atteindre cela dans Swift:

Vous devez en avoir un UISwipeGestureRecognizer pour chaque direction. C'est un peu étrange car la propriété UISwipeGestureRecognizer.direction est un masque de bits de style options, mais chaque reconnaissance ne peut gérer qu'une seule direction. Vous pouvez les envoyer tous au même gestionnaire si vous le souhaitez et les trier ou les envoyer à différents gestionnaires. Voici une implémentation:

override func viewDidLoad() { 
    super.viewDidLoad() 

    var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:") 
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right 
    self.view.addGestureRecognizer(swipeRight) 

    var swipeDown = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:") 
    swipeDown.direction = UISwipeGestureRecognizerDirection.Down 
    self.view.addGestureRecognizer(swipeDown) 
} 

func respondToSwipeGesture(gesture: UIGestureRecognizer) { 

    if let swipeGesture = gesture as? UISwipeGestureRecognizer { 

     switch swipeGesture.direction { 
     case UISwipeGestureRecognizerDirection.Right: 
      println("Swiped right") 
     case UISwipeGestureRecognizerDirection.Down: 
      println("Swiped down") 
     default: 
      break 
     } 
    } 
} 
+0

Pourquoi voter à la baisse quand cela fonctionne parfaitement et pourrait aider les gens du monde entier? –