1

私のアプリではUIDatePicker、カスタム テキストの色を使用しています。iOS 12/13 では、このコードは正常に動作します。

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

しかし、iOS 14 でアプリがクラッシュしました。

スタックトレース:

-[_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以降でカスタムテキストの色を使用する方法を知っている人はいますか?

4

3 に答える 3

0

Larmeがリンクした回答で回答したようにtextColor、の私有財産ですUIDatePicker。どのバージョンの iOS にも存在するという保証はありません。そのため、あなたが行っていることは安全ではありません。

KVC を使用すると、コンパイル時のチェックなしでオブジェクトのプロパティを変更できるため、プロパティが削除されるとクラッシュします。

于 2020-07-09T17:59:14.000 に答える