Проверьте пример проекта MAAttachedWindow:
http://mattgemmell.com/source/
Отличное начало для создания пользовательских подсказок.
NSView имеет специальные обработчики для событий мыши.
Просто измените NSView (всплывающую подсказку) на основе этих событий.
Я добавил несколько фрагментов, чтобы вы начали.
- (void)mouseMove:(NSEvent *)theEvent {
NSPoint mousePositionInWindow = [theEvent locationInWindow];
}
- (void)mouseDown:(NSEvent *)theEvent {
}
- (void)mouseDragged:(NSEvent *)theEvent {
}
- (void)mouseUp:(NSEvent *)theEvent {
}
Ответ на комментарий:
Однажды я столкнулся с точно такой же проблемой: один вид с непрерывными обновлениями всплывающей подсказки, показывающий положение курсора и некоторую дополнительную информацию. Я понял, что никогда не работал с родными подсказками. Наконец, я пришел к решению, описанному выше, которое легко реализовать, и оно стало еще лучше.
Вместо использования отдельного окна вы также можете нарисовать пользовательскую подсказку внутри самого NSView относительно позиции курсора. Вы также можете поместить дополнительный NSView поверх существующего NSView для отображения пользовательских подсказок.
Мне не нравится поведение всплывающей подсказки. По-видимому, они имеют встроенные временные задержки, которые нельзя изменить, например: курсор должен находиться на одной позиции в течение некоторого времени, чтобы отобразить всплывающую подсказку в первый раз. Как только появится первая всплывающая подсказка, следующая будет отображаться с гораздо меньшей задержкой, но это все еще довольно раздражает.
Конечно, вы всегда можете показать информацию на ярлыке, расположенном рядом с представлением, что очень легко реализовать. Но это не настоящий ответ на ваш вопрос:)