"Setup Pay" 文本显示为 IN_APP_PAYMENT_BUTTON_SETUP Pay

"Setup Pay" text appearing as IN_APP_PAYMENT_BUTTON_SETUP Pay

我在我的项目中进行了本地化,当我添加 apple pay 按钮时它显示 IN_APP_PAYMENT_BUTTON_SETUP 而不是 "Setup Pay"。

当添加到不同的示例项目时,相同的代码奇怪地显示正确的 Apple 支付按钮。

if ([PKPaymentAuthorizationViewController canMakePayments]) {



        if ([PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:@[PKPaymentNetworkVisa, PKPaymentNetworkMasterCard, PKPaymentNetworkAmex]]) {

            //Standard code
        }
        else{

            UIButton *btnApplePay = [PKPaymentButton buttonWithType:PKPaymentButtonTypeSetUp style:PKPaymentButtonStyleWhiteOutline];
            [btnApplePay setFrame:CGRectMake(10, 10, 294, 50)];
            [self.view addSubview:btnApplePay];


        }
    }

此外,如果 PKPaymentButton 的宽度小于 128 像素,则 PKPaymentButton 会显示“ 支付”文本。

最后,我找到了整个问题背后的原因。

正如我在评论中提到的,我找到了这个问题的根本原因,即本地化。

我试图在演示应用程序中复制相同的代码和环境,但无法重现相同的行为。最后我能够指出我在我的应用程序中使用的 BundleLocalization 的确切原因,因为我需要即时更改应用程序内的语言。

当我深入研究 BundleLocalization class 时,我发现有一个名为 NSBundle+Localization 的类别使用,它有一个名为的方法:

-(NSString*) customLocaLizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName

显然,这弄乱了 localizationBundle。因此,我必须为此找到一个解决方法,以便继续在我的应用程序中使用本地化。