2017-07-15 6 views
5

Ich habe Lokalisierung in meinem Projekt, wenn ich die Apple Pay-Taste hinzufügen zeigt IN_APP_PAYMENT_BUTTON_SETUP anstelle von "Setup Pay"."Setup  Pay" Text erscheint als IN_APP_PAYMENT_BUTTON_SETUP Pay

Seltsam gleichen Code zeigt richtige Apple Pay Button, wenn zu einem anderen Beispielprojekt hinzugefügt.

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]; 


     } 
    } 

Auch wenn die Breite des PKPaymentButton der Größe kleiner als 128 Pixel dann der PKPaymentButton zeigt „ Pay“ Text.

+0

Wenn Sie die Zahlungsschaltfläche in Ihrem Storyboard erstellen, rufen Sie nicht 'initWithPaymentButtonType' auf. Wenn Sie die Schaltfläche programmgesteuert erstellen möchten, fügen Sie sie nicht im Storyboard hinzu, und Sie müssen sicherstellen, dass Sie die Schaltfläche zu Ihrer Ansichtshierarchie hinzufügen. – Paulw11

+0

Auch wenn ich 'buttonWithType' anstelle von' initWithPaymentButtonType' verwende, bleibt das selbe Problem bestehen, wenn ich den Button vom Storyboard habe, und dasselbe gilt, wenn ich eine Schaltfläche im Code anstelle einer Schaltfläche aus der Storyboard-Datei erstelle. – Aditya

+0

Wenn Sie die Schaltfläche aus dem Storyboard erstellen, benötigen Sie keinen Code. Sie müssen den Button-Typ im Storyboard festlegen. Wenn Sie mit Code erstellen, stellen Sie sicher, dass Sie die Schaltfläche hinzufügen. Zeigen Sie diesen Code – Paulw11

Antwort

2

SCHLIESSLICH fand ich den Grund für dieses ganze Problem.

Wie ich in meinen Kommentaren erwähnt habe, war ich in der Lage, die Ursache dieses Problems zu finden, nämlich Lokalisierung.

Ich habe versucht, den gleichen Code und die gleiche Umgebung in einer Demo-App zu replizieren, konnte das gleiche Verhalten jedoch nicht reproduzieren. Schließlich konnte ich die genaue Ursache, nämlich BundleLocalization, die ich in meiner App verwendet habe, genau angeben, da ich die Sprachen innerhalb der App im laufenden Betrieb ändern muss.

Wie ich tief im Innern der BundleLocalization Klasse gegraben, ich war in der Lage, um herauszufinden, dass es eine Verwendungskategorie NSBundle+Localization genannt ist, die ein Verfahren genannt hat:

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

Offenbar dies vermasselt die localizationBundle auf. Also muss ich einen Workaround dafür finden, um die Lokalisierung in meiner App weiter zu verwenden.