Мне нужно создать настраиваемое представление всплывающей подсказки для всех представлений моего проекта.
Для всех представлений?Большинство приложений имеют множество представлений, о которых пользователь даже не знает - представления, используемые для хранения групп элементов управления и тому подобное.Так что было бы странно предлагать подсказки для каждого просмотра.Всплывающие подсказки обычно используются с компонентами интерфейса, которые на самом деле делают что-то, и их цель - сообщить пользователю, что это такое.Вот почему вы видите, что NSControl
имеет методы для управления всплывающими подсказками, а NSView
нет.
Каков наилучший способ сделать это?
Во-первых, решите, действительно ли вы хотите, чтобы вам нужны подсказки для каждого вида, или вам просто нужны такие же подсказки, как у Cocoa, но нарисованные по-разному.Если последнее, то вы можете создать подкласс для каждого используемого вами элемента управления и переопределить draw(withExpansionFrame:in:)
, чтобы нарисовать нужные подсказки.
Если вам действительно нужны подсказки для каждого вида, вы могли бы лучше реализовать свою собственную систему.Один из подходов может состоять в том, чтобы в вашем приложении был какой-то объект отслеживать события перемещения мыши .Вы можете запустить таймер для отслеживания прошедшего времени после каждого события перемещения мыши, при котором каждое новое событие отменяет действие старого таймера и запускает новое.Если таймер истекает, он может добавить представление, отображающее ваше пятиугольное представление «подсказка», в окно рядом с мышью.