J'ai une sous-classe de Nsview qui implémente un certain nombre de fonctions d'événement de la souris. Par exemple, à Mousedown pour obtenir le point de la NSEvent, j'utilise:
NSEvent *theEvent; // <- argument to function NSPoint p = [theEvent locationInWindow]; p = [self convertPoint:p fromView:nil];
4 Réponses :
Que voulez-vous dire par renversé? Mac utilise un système de coordonnées LLO (d'origine à gauche) pour tout.
edit strong> Je ne peux pas reproduire cela avec un projet simple. J'ai créé un seul J'ai reçu les coordonnées que j'attendrais. Suppression du Nsview code> implémenté comme suit: p>
isflipped code> a commuté l'orientation comme prévu. Avez-vous un projet simple qui démontre votre problème? P> p>
Je voulais dire, j'avais déjà remplacé la méthode isflipped. Ma faute, je n'ai pas assez clair.
Dans mon test, isflipped {oui} code> sera i> convertir le point en une origine supérieure gauche si vous utilisez ConvertPoint: deview: b>. Mais pas i> si vous utilisez ConvertPoint: TOVIEW: B> - Ceci est attendu, car
toView: code> suppose que le point est déjà dans le
code> Système de coordonnées de la vue.
J'ai trouvé cela aussi odieux - jusqu'à un jour, je me suis assis et j'ai refusé de me lever jusqu'à ce que j'ai eu quelque chose qui a parfaitement fonctionné. Voici. Un mineur freakout em> .. quelque part, un jour em>. Pour les enfants, Damnit. Je vous prie de vous .. Pour les enfants. P> P>
Ce code a fonctionné pour moi:
NSPoint location = [self convertPoint:theEvent.locationInWindow fromView:nil]; location.y = self.frame.size.height - location.y;