【问题标题】:How to detect color panel's color change in Mac Catalyst app?如何在 Mac Catalyst 应用程序中检测颜色面板的颜色变化?
【发布时间】:2020-12-25 13:30:21
【问题描述】:

在 Mac Catalyst 中,有一个显示颜色面板的默认工具栏项。

https://developer.apple.com/documentation/appkit/nstoolbaritem/identifier/1531463-showcolors

它显示得很好,但我找不到从这个颜色面板检测颜色变化的方法。有谁知道怎么做?

【问题讨论】:

    标签: ios macos mac-catalyst nscolorpanel


    【解决方案1】:

    单击工具栏项时,会显示NSColorPanel 的实例。可以从NSColorPanel.color 访问选定的颜色,但我们没有对所示面板的引用。甚至 NSColorPanel 类对 Mac Catalyst 应用程序也不可见。

    幸运的是,在颜色面板中选择颜色时会发布一个notification。因此,我们只需要观察该通知以获取对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)
    }
    

    【讨论】:

    • 可以,但不确定能否通过审核。
    • 我很确定它会的。您在这里没有访问任何私有 API。全部记录在案。
    • @Hejazi 你能提供objective-c代码吗?
    • @YogendraPatel 好吧,这是给你的作业 :) 说真的,这是使用NSNotificationCenter 进行的基本事件监听。您可以自己轻松完成。
    猜你喜欢
    • 2013-04-29
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 2014-04-14
    相关资源
    最近更新 更多