Как изменить NSCursor глобально?

Я разрабатываю приложение с несколькими окнами и представлениями (NSTextView и т. д.).

Я хотел бы изменить курсор глобально в своем приложении, чтобы даже если курсор вошел в trackingRect (например) NSTextView, он не изменился.

Это возможно?


PS: мне также нужно вернуться к обычному поведению.


person Colas    schedule 03.02.2017    source источник
comment
Если вы просите переключатель, вы можете выключать и включать, чтобы определенный курсор отображался в любом представлении, которого не существует. Вы должны создать подкласс для каждого представления и переопределить соответствующие методы.   -  person rocky    schedule 09.02.2017
comment
Ах... как я могу отключить смену курсора для набора представлений? (NSTextView, PDFView и т. д.) Как вы думаете, это достижимо без подклассов?   -  person Colas    schedule 09.02.2017


Ответы (1)


Да, это возможно. У меня было почти похожее требование, и вот как я его решил:

При создании окна создайте прозрачный вид с тем же frame, что и у окна. Затем добавьте прямоугольник курсора в представление (которое распространяется на последний bounds) для вашего конкретного курсора. Наконец, добавьте его в качестве последнего подпредставления окна contentView, чтобы оно действовало как наложение. Когда это наложение присутствует, курсорные прямоугольники базовых представлений не активируются.

См. https://stackoverflow.com/a/43886799/7908996 для получения подробных инструкций и рабочего кода (прочитайте the окна contentView вместо WebView). В нем также описывается, как вернуться к обычному поведению.

Надеюсь, это поможет! :)

person Shiva Prasad    schedule 11.05.2017