Convertir un NSPoint desde las coordenadas de la ventana para ver las coordenadas
Mi aplicación tiene una vista personalizada que muestra una línea de tiempo de eventos. Esta vista está envuelta en unaNSScrollView
para admitir el desplazamiento horizontal de la línea de tiempo. Usando notificaciones, he implementado un mecanismo que debería mostrar otra vista personalizada que muestra información detallada sobre un evento cuando el usuario hace clic en ese evento en la línea de tiempo. A continuación se muestra el código que maneja el evento cuando es recibido por la línea de tiempo:
NSEvent *anEvent = [aNotification object];
NSPoint aLocationInSelf = [self convertPoint: [anEvent locationInWindow] toView: self];
// Create callout view and display
NSRect aRect = NSMakeRect(aLocationInSelf.x, aLocationInSelf.y, 300, 200);
TimelineCallout *aCallout = [[TimelineCallout alloc] initWithFrame: aRect];
[self addSubview: aCallout];
En el código anterior, realizo una conversión del punto del clic del mouse según lo registrado por el evento desde las coordenadas de la ventana para ver las coordenadas (línea de tiempo).
Sin embargo, cuando paso por esto con el depurador no se realiza ninguna conversión ylocationInSelf
muestra las mismas coordenadas que el punto que obtengo de[anEvent locationInWindow]
. Como resultado, la llamada se dibuja en el lugar incorrecto o no es visible en absoluto.
Debo estar haciendo algo mal, pero no puedo entender qué ...