UIDatePicker cra sh на iOS 14 при установке textColor через KVC - PullRequest
0 голосов
/ 09 июля 2020

В моем приложении я использую UIDatePicker с настраиваемым цветом текста, а на iOS 12/13 этот код работает нормально:

timePicker.setValue(UIColor.red, forKeyPath: "textColor")

Но на iOS 14 мое приложение разбилось.

Stacktrace:

-[_UIDatePickerIOSCompactView _setTextColor:]: unrecognized selector sent to instance 0x7ff09265a8c0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_UIDatePickerIOSCompactView _setTextColor:]: unrecognized selector sent to instance 0x7ff09265a8c0'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000011b0eea2a __exceptionPreprocess + 242
    1   libobjc.A.dylib                     0x000000011aa004ce objc_exception_throw + 48
    2   CoreFoundation                      0x000000011b0fd579 +[NSObject(NSObject) instanceMethodSignatureForSelector:] + 0
    3   UIKitCore                           0x00000001235db925 -[UIResponder doesNotRecognizeSelector:] + 292
    4   CoreFoundation                      0x000000011b0f2cf4 ___forwarding___ + 859
    5   CoreFoundation                      0x000000011b0f4f98 _CF_forwarding_prep_0 + 120
    6   Foundation                          0x0000000110c0a6ae -[NSObject(NSKeyValueCoding) setValue:forKey:] + 325
    7   UIKitCore                           0x0000000123af85c5 -[UIView(CALayerDelegate) setValue:forKey:] + 171

Кто-нибудь знает, как можно использовать собственный цвет текста на iOS 14 +?

1 Ответ

0 голосов
/ 09 июля 2020

Как я ответил в ответе, связанный с Лармом, textColor является частной собственностью UIDatePicker. Нет гарантии, что он будет существовать в любой версии iOS, поэтому то, что вы делаете, небезопасно.

KV C позволяет вам попытаться изменить свойства объекта без какой-либо проверки во время компиляции, поэтому, если свойство будет удалено, вы получите sh.

...