2016-01-23 6 views
1

J'essaie d'écrire un programme en utilisant UIBezierPath et touche les méthodes. Je suis confus par deux touches méthode:Quand un iOS touche-t-il la méthode (Annulée & Terminée) appelée?

- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event; 
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event; 

Je ne comprends pas quand ces méthodes sont appelées ou comment puis-je les appeler. Au début, je pensais qu'ils étaient tous les deux identiques, jusqu'à ce que je lis quelque part qu'ils ne l'étaient pas. La question est: Comment puis-je appeler l'une de ces méthodes et comment sont-elles différentes les unes des autres?

Répondre

3

Vous ne devez pas appeler ces méthodes. Ils sont appelés par Cocoa cadre pour vous. Vous avez juste besoin de les implémenter pour fournir le comportement correct (le natif) de votre sous-classe de UIResponser ou de votre sous-classe personnalisée UIGestureRecognizer.

Veuillez vous référer au Apple's guide à propos du sous-classement UIResponder pour plus de détails sur la façon dont vous devriez implémenter ces méthodes.

De Apple's documentation environ - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event méthode:

Indique le répondeur lorsque un ou plusieurs doigts sont soulevées à partir d'un point de vue ou d'une fenêtre.

De Apple's documentation environ - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event méthode:

envoyé au récepteur quand un événement du système (par exemple un avertissement de mémoire insuffisante) annule un événement tactile.

1

This document d'Apple vous donner une réponse au sujet de l'événement touchesCancelled:

Si un répondeur crée des objets persistants lors de la manipulation des événements, il doit mettre en œuvre la touchesCancelled:withEvent: méthode pour éliminer ces objets si le système annule la séquence . L'annulation se produit lorsqu'un événement externe, par exemple un appel téléphonique entrant, perturbe le traitement des événements de l'application en cours. Notez qu'un objet répondeur doit également disposer des objets persistants lorsqu'il reçoit le dernier message touchesEnded:withEvent: pour une séquence multitouch.

Cette méthode est nécessaire lorsque vous implémentez la gestion des événements tactiles personnalisés dans votre application pour un objet personnalisé. Il vous permet de nettoyer les ressources lorsque l'utilisateur arrête de toucher votre objet personnalisé ou lorsque les touches sont annulées.