Closed mvarie closed 3 years ago
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.
@davidme-stripe Any update on this?
Summary
It seems that it is now impossible to subclass
STPPaymentCardTextField
.The compile-time error is:
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:
Code to reproduce
class MYPaymentCardTextField: STPPaymentCardTextField{}
iOS version
14.4
Installation method
Swift Package Manager
SDK version
21.3.1
Other information
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 asopen
. Emphasis mine:Source: The Swift Programming Language - Access Control