6
votes

Coordonnées de souris Nsview retournées

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


0 commentaires

4 Réponses :


7
votes

Que voulez-vous dire par renversé? Mac utilise un système de coordonnées LLO (d'origine à gauche) pour tout.

edit Je ne peux pas reproduire cela avec un projet simple. J'ai créé un seul Nsview implémenté comme suit: xxx

J'ai reçu les coordonnées que j'attendrais. Suppression du isflipped a commuté l'orientation comme prévu. Avez-vous un projet simple qui démontre votre problème?


2 commentaires

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} sera convertir le point en une origine supérieure gauche si vous utilisez ConvertPoint: deview: . Mais pas si vous utilisez ConvertPoint: TOVIEW: - Ceci est attendu, car toView: suppose que le point est déjà dans le Système de coordonnées de la vue.




3
votes

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 .. quelque part, un jour . Pour les enfants, Damnit. Je vous prie de vous .. Pour les enfants.


0 commentaires

3
votes

Ce code a fonctionné pour moi:

NSPoint location =  [self convertPoint:theEvent.locationInWindow fromView:nil];
location.y = self.frame.size.height - location.y;


0 commentaires