Мое приложение имеет настраиваемое представление, отображающее временную шкалу событий. Это представление завернуто в 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]
. В результате выноска рисуется в неправильном месте или вообще не отображается.
Я должен делать что-то не так, но я не могу понять, что...