NSColorWell не открывается при привязке к ValueTransformer
-
22-09-2019 - |
Вопрос
у меня есть NSColorWell
, который привязан к свойству, содержащему NSString
экземпляр, который преобразуется в NSColor
через мой ColorTransformer (NSValueTransformer
).По сути, это преобразует что-то вроде #FF0000
в NSColor
.Это работает, как и ожидалось, но ColorWell больше не открывает свою панель при нажатии.Когда я отключаю привязку, она снова работает.Есть какие-нибудь подсказки о том, что я здесь делаю неправильно?
Решение
вернуть ДА в
+(BOOL)allowsReverseTransformation
в примере Apple Docs он возвращает NO, однако реализация по умолчанию возвращает YES.Причина этого теоретически достаточно проста:Apple не хочет, чтобы ваши пользователи могли устанавливать цвет, который затем приведет к сбою приложения (поскольку обратное преобразование не было реализовано).Тогда вам, вероятно, следует реализовать
- (id)reverseTransformedValue:(id)value
чтобы этого не произошло, если вы еще этого не сделали.(Если вы не указали в документах Apple, что они вызовут - (id)transformedValue:(id)value)