Как я могу сделать программно настраиваемую подсказку в какао (OS X)? - PullRequest
0 голосов
/ 03 марта 2019

Мне нужно сделать настраиваемый вид всплывающей подсказки для всех видов моего проекта.Этот вид всплывающей подсказки имеет определенную форму (пятиугольник), шрифт, цвет шрифта и цвет фона.Кроме того, он должен иметь типичную задержку, как всплывающая подсказка системы, когда ввод мыши и выход мыши из вида.Как лучше всего это сделать?

Спасибо за ответы

1 Ответ

0 голосов
/ 03 марта 2019

Мне нужно создать настраиваемое представление всплывающей подсказки для всех представлений моего проекта.

Для всех представлений?Большинство приложений имеют множество представлений, о которых пользователь даже не знает - представления, используемые для хранения групп элементов управления и тому подобное.Так что было бы странно предлагать подсказки для каждого просмотра.Всплывающие подсказки обычно используются с компонентами интерфейса, которые на самом деле делают что-то, и их цель - сообщить пользователю, что это такое.Вот почему вы видите, что NSControl имеет методы для управления всплывающими подсказками, а NSView нет.

Каков наилучший способ сделать это?

Во-первых, решите, действительно ли вы хотите, чтобы вам нужны подсказки для каждого вида, или вам просто нужны такие же подсказки, как у Cocoa, но нарисованные по-разному.Если последнее, то вы можете создать подкласс для каждого используемого вами элемента управления и переопределить draw(withExpansionFrame:in:), чтобы нарисовать нужные подсказки.

Если вам действительно нужны подсказки для каждого вида, вы могли бы лучше реализовать свою собственную систему.Один из подходов может состоять в том, чтобы в вашем приложении был какой-то объект отслеживать события перемещения мыши .Вы можете запустить таймер для отслеживания прошедшего времени после каждого события перемещения мыши, при котором каждое новое событие отменяет действие старого таймера и запускает новое.Если таймер истекает, он может добавить представление, отображающее ваше пятиугольное представление «подсказка», в окно рядом с мышью.

...