#ios #macos #mac-catalyst #nscolorpanel
#iOS #macos #mac-catalyst #цветная панель nscolorpanel #nscolorpanel
Вопрос:
В Mac Catalyst есть элемент панели инструментов по умолчанию, который показывает цветную панель.
https://developer.apple.com/documentation/appkit/nstoolbaritem/identifier/1531463-showcolors
Он отображается просто отлично, но я не могу найти способ обнаружить изменение цвета с помощью этой цветовой панели. Кто-нибудь знает, как это сделать?
Ответ №1:
При нажатии на элемент панели инструментов отображается экземпляр NSColorPanel
. Выбранный цвет можно получить из NSColorPanel.color
, но у нас нет ссылки на показанную панель. Даже класс NSColorPanel
не отображается в приложениях Mac Catalyst.
К счастью, существует уведомление, которое публикуется при выборе цвета на цветовой панели. Итак, все, что нам нужно, это просмотреть это уведомление, чтобы получить ссылку на NSColorPanel
экземпляр, а затем получить доступ к его color
свойству:
NotificationCenter.default.addObserver(forName: .init("NSColorPanelColorDidChangeNotification"), object: nil, queue: nil) { notification in
let color = (notification.object as? NSObject)?.value(forKey: "color") as? UIColor
print("Color changed", color)
}
Комментарии:
1. Это работа, но не уверен, пройдет она проверку или нет.
2. Я почти уверен, что так и будет. Здесь вы не получаете доступа ни к какому частному API. Все задокументировано.
3. @Hejazi не могли бы вы, пожалуйста, предоставить код objective-c?
4. @YogendraPatel Ну, это домашнее задание для тебя 🙂 Если серьезно, то это простое прослушивание событий с помощью
NSNotificationCenter
. Вы можете легко сделать это самостоятельно.