Преобразование NSPoint из координат окна в координаты представления

В моем приложении есть настраиваемое представление, которое отображает временную шкалу событий. Это представление заключено в NSScrollView для поддержки горизонтальной прокрутки временной шкалы. Используя уведомления, я реализовал механизм, который должен отображать другое настраиваемое представление, которое отображает подробную информацию о событии, когда пользователь щелкает это событие на временной шкале. Ниже приведен код, обрабатывающий событие, когда оно получено временной шкалой:

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

В приведенном выше коде я выполняю преобразование точки щелчка мыши, зарегистрированной событием, из координат окна в координаты просмотра (временной шкалы).

Однако, когда я выполняю это с помощью отладчика, преобразование не происходит, и locationInSelf показывает те же координаты, что и точка, которую я получил из [anEvent locationInWindow] . В результате выноска отображается не в том месте или вообще не видна.

Я, должно быть, делаю что-то не так, но не могу понять, что ...

14
задан Roger 6 November 2011 в 17:11
поделиться