objective-c - 与 ValueTransformer 绑定(bind)时 NSColorWell 无法打开

标签 objective-c cocoa nscolor

我有一个 NSColorWell,它绑定(bind)到一个包含 NSString 实例的属性,该实例通过我的 ColorTransformer 转换为 NSColor (NSValueTransformer)。它本质上是将 #FF0000 之类的内容转换为 NSColor。这按预期工作,但单击时 ColorWell 不再打开其 Pane 。当我禁用绑定(bind)时,它会再次起作用。有什么线索可以说明我在这里做错了什么吗?

最佳答案

中返回YES

+(BOOL)允许反向转换

苹果文档示例返回 NO,但默认实现返回 YES。理论上,其背后的原因非常简单:苹果不希望您的用户能够设置一种颜色,从而使应用程序崩溃(因为未实现反向转换)。然后你可能应该实现

- (id)reverseTransformedValue:(id)value

确保这种情况不会发生(如果您还没有这样做的话)。 (如果你不知道苹果的文档说它会调用 - (id)transformedValue:(id)value)

关于objective-c - 与 ValueTransformer 绑定(bind)时 NSColorWell 无法打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2337798/

相关文章:

objective-c - 检测 macOS 10.14 强调色何时发生变化

iOS 相当于 [NSColor colorUsingColorSpaceName :NSCalibratedRGBColorSpace]

nsmenu - 如何访问系统选择的菜单项蓝色?

ios - 在 ios 模拟器上运行时,当 imagePicker 的源是相机时应用程序崩溃?

ios - 发送到实例的无法识别的选择器

ios - 向后滑动时 UINavigationController 白线故障

cocoa - 如果所有方法都是可选的,那么协议(protocol)的目的是什么?

swift - 在 Sandbox 中使用 Cocoa NSSavePanel 导致断言失败

iphone - 如何在基于 View 的应用程序中的所有 View 中获取不同的选项卡?

iphone - 核心动画围绕任意点旋转图层