It seems that it is now impossible to subclass STPPaymentCardTextField.
The compile-time error is:
Cannot inherit from non-open class ‘STPPaymentCardTextField’ outside of its defining module
This also makes it impossible to override in a subclass methods that are intended to be overridden by design, such as brandImageForCardBrand, cvcImageForCardBrand, errorImageForCardBrand and others.
Stripe Reference > STPPaymentCardTextField Class Reference > brandImageForCardBrand:
Stripe Reference > STPPaymentCardTextField Class Reference > cvcImageForCardBrand:
Stripe Reference > STPPaymentCardTextField Class Reference > errorImageForCardBrand:
class MYPaymentCardTextField: STPPaymentCardTextField{}

14.4
Swift Package Manager
21.3.1
It didn't happen with SDK version 20.1.1 (which was still objc apparently), it started happening when upgrading from 20.1.1 to 21.3.1.
Class in swift file is marked as public, but it should be probably marked as open. Emphasis mine:
Open access applies only to classes and class members, and it differs from public access by allowing code outside the module to subclass and override, as discussed below in Subclassing. Marking a class as open explicitly indicates that you’ve considered the impact of code from other modules using that class as a superclass, and that you’ve designed your class’s code accordingly.
Thanks for the report @mvarie, I've got a fix for this that we'll include in the next release
@csabol-stripe Thanks for looking at this! Is there a timeline for the next release? 🙏
This should be fixed in 21.4.0.
21.4.0 doesn't fix it though: https://github.com/stripe/stripe-ios/commit/fbd12ae891462b8896e53454610f68921b0d73ef only made the class open, but we need the specific methods to be open as well
Sorry, we totally missed that. :( We'll issue another update very soon.
@devesh-stripe When we can expect the next release with this fix?
If I try to subclass this I get exc_bad_access in delegate etc. Is it possible to allow to completely subclass (remove brand image view for example, add floating label) in future releases?
Please try 21.5.0, this should be fixed.
Hey @davidme-stripe
It seems the issue fixed partially, there are few more methods that are not allowing to override.
override func brandImageRect(forBounds bounds: CGRect) -> CGRect

Yeah, we also need to override brandImageRect which was previously overridable.
Most helpful comment
Thanks for the report @mvarie, I've got a fix for this that we'll include in the next release