Comment puis-je obtenir le nom de [touch view] dans l'événement touchesbegan. Donc si c'était UIView * aaaaaview j'obtiendrais aaaaaview comme le retour; Merci, nonononom de UIView touché
Répondre
Le paramètre touches
est un ensemble de UITouch
instances, qui ont une view
propriété correspondant:
La valeur de la propriété est l'objet de vue dans lequel le contact a eu lieu à l'origine.
UIView
s ne disposent pas d'un nom spécifique, mais vous pouvez vérifier uniquement leur identité, i.e. .:
if([touch view] == aaaview) {}
ou utiliser - (BOOL)isEqual:
.
Vous pouvez également utiliser la place propriété tag
pour leur donner des identités significatives:
enum MyViews {
AaaView,
// ...
};
aaaview.tag = AaaView;
// ...
if([touch view].tag == AaaView) {}
Si vous avez vraiment besoin de noms pour une raison quelconque, ne sont pas mentionnés dans la question, vous pouvez sous-classe UIView
et présenter une propriété de nom.
Comment obtenir le nom de la vue dans laquelle le contact est apparu à l'origine – 123hal321
Comme l'expliquent gf et Frank, la vue n'a pas * de * nom. Vous pouvez obtenir le nom de la classe, mais le nom de la variable que vous utilisez lorsque vous codez l'application n'existe pas dans le code compilé. Les noms de variables ne sont qu'une aide pour nous pendant que nous programmons. Si vous voulez juste identifier les vues, le moyen le plus rapide est d'utiliser la propriété tag, où vous pouvez stocker et lire un entier. – Felixyz
"UIView * aaaaaView" fait simplement référence à une place en mémoire. Donc, si vous aviez
UIView *aView;
UIView *anotherView;
aView = anotherView;
et l'utilisateur a touché un UIView, serait le nom de la vue soit « aView » ou « anotherView »? En particulier, un UIView n'a aucune connaissance du nom de la variable que vous utilisez pour le stocker.
Je pense que vous allez devoir initialiser un nom de mappage NSDictionary à UIViews.
Quelque chose dans votre -viewDidLoad comme ça, peut-être:
yourDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
@"aaaaaView", aaaaaView, @"viewTwo", viewTwo, nil];
puis dans votre événement, vous pouvez dire
NSString *viewName = (NSString *) [yourDictionary objectForKey: [touch view]];
'-initWithObjectsAndKeys:' doit être terminé par 'nil'. – kennytm
@KennyTM merci; modifié. –
Ou peut-être quelque chose comme ceci:
if ([viewController.nibName isEqualToString:@"aaaaView"])
- 1. Vérifiez si UIView est touché?
- 2. Devinez le UIImageView touché
- 3. dont le contrôle a touché
- 4. UIView dans les UIView
- 5. UIView classe
- 6. Le gestionnaire d'asp.net personnalisé n'est pas touché
- 7. Comment détecter quand un dessin est touché
- 8. Quel objet, ou vue, ai-je touché?
- 9. Comment déterminer quel contrôle a été touché?
- 10. Tabbar badge cacher quand Tabbaritem touché
- 11. Performance: UIView dans un UIView ou remplacez le UIView?
- 12. Quelle est la méthode déléguée appelée lorsqu'un MKPinAnnotationView est touché?
- 13. Sous-classe UIView ou composer avec UIView
- 14. Accès à UITableViewController> UIView> UIView?
- 15. Obtention de UIView Type
- 16. uiview Problème de transition
- 17. Image de UIView
- 18. appelant methdods de UIView
- 19. Evénement de glissement UIView
- 20. Couleur de fond UIView
- 21. iPhone Objectif C: Comment obtenir la couleur d'un pixel du point touché sur un UIImageView?
- 22. DragView UIView
- 23. UIView removeFromSuperview
- 24. Clignotant UIView
- 25. UIView animation
- 26. Mouvement UIView
- 27. UIView animation
- 28. UIView dupliquer
- 29. Problèmes de création d'un UIView personnalisé
- 30. Double barres de navigation UIView
Je m curieux de ce que vous utilisez pour cela? – blindjesse