2015-08-17 6 views
8

Ich möchte Zahlungsfunktionalität mit paysbuy SDK implementieren .... Das Problem ist, es hat keine cancel Option darauf, so dass Benutzer den Vorgang beenden kann, nachdem die Zahlung erfolgreich war.Implementieren benutzerdefinierte Abbrechen-Schaltfläche in einem SDK

von Standard-SDK stellt eine Methode, die das Standard WebView, die den gesamten Teil des screen..And nicht dort erstreckt sich öffnet, ist jede cancel Option ..

Ich möchte nur die Zahlung einer cancel Taste durch Last hinzufügen auf der spezifischen view .. oder viewcontroller ..I versucht, mit in container view..to die Ansicht in der container Ansicht und eine cancel Schaltfläche außerhalb der container Ansicht, aber wenn ich diesen Prozess versuchen, zeigt es standardmäßig im Vollbild WebView . Auch versucht, eine PopUP erstellen, aber nicht erfolgreich

Also, wie kann ich die webview von SDK auf einen bestimmten Teil meiner view laden, so dass ich einen Cancel Knopf setzen kann ??

Dies ist die Methode, die die sdk den Dienst

- (void) callServiceWithCurrentView :(UIViewController *) currentViewController 
          invoice:(NSString *)invoice 
           item:(NSString *)item 
           amount:(NSString *)amount 
         paypal_amount:(NSString *)paypal_amount 
         transferMethod:(NSString *)transferMethod 
        customerLanguage:(NSString *)customerLanguage 
         operator_name:(NSString *)operator_name 
         operator_email:(NSString *)operator_email 
        operator_mobile:(NSString *)operator_mobile 
        operator_address:(NSString *)operator_address 
        operator_detail:(NSString *)operator_detail; 

Hier können wir sehen, die callServiceWithCurrentView Methode zeigt das Ziel als currentviewcontroller so denken beginnen liefert ich es standardmäßig in full screen-Modus auf dem viewcontroller lädt .. ..

Hier ist, wie ich

paysBuy?.callServiceWithCurrentView(self, invoice: "343434343", item: "App Fee", amount: "10", paypal_amount: "1", transferMethod: "1", customerLanguage: "E", operator_name: "PAYSBUY", operator_email: "[email protected]paysbuy.com", operator_mobile: "0888888888", operator_address: "PAYSBUY.COM", operator_detail: "PAYMENT") 

in swift umgesetzt und Delegierter mich thod, die die Antwort im Erfolgsfall behandelt oder failutre

extension PaysBuyHelper:PaysbuySDKDelegate{ 
    func responseWithResult(result: String!, andInvoice invoice: String!) { 

     //here is the response of the payement 

     println(result) 
     println(invoice) 

     if result == "00" { 

      println("transaction complete and below is the invoice number") 
      println(invoice) 

     }else if result == "90"{ 

      println("transaction incomplete information") 

     } 

    } 

} 

Hier ist die Arbeit, die ich getan habe .... https://drive.google.com/file/d/0Bzk4QVQhnqKmVno5NGdPUV9ITkE/view?usp=sharing

+0

Sie können Abbrechen Schaltfläche in Webview nicht hinzufügen, weil Sie keine Kontrolle über es haben, eine Lösung, die ich denke, um dieses Problem zu lösen, müssen Sie einen anderen UIViewController statt selbst in der Funktion übergeben und versuchen zu machen der zweite UIViewController als Popup mit geringerer Höhe oder ähnlich –

+1

@VarunNaharia Das Problem scheint zu sein, dass das verwendete SDK den Root-Controller ersetzt. Daher gibt es keine Möglichkeit zu kontrollieren, was auf dem Bildschirm ist, wenn es übernommen wird. –

+0

@VarunNaharia Ich habe versucht, wie du gesagt hast, aber es hat nicht gut funktioniert ... es zeigt mir Standard im Vollbildmodus .. über Popup, Container-Ansicht und wie Rory in der Antwort erzählt .. aber keiner von ihnen funktioniert –

Antwort

7

Modal-Controller im Rahmen Kontext des Controllers präsentiert werden, die angenommen wird Definieren Sie den Präsentationskontext.

Eine Option, die Sie haben, ist, dass der Controller, der callServiceWithCurrentView aufruft, den Kontext für jede modale Darstellung definiert, die dann verwendet werden kann, um den Bereich auf dem Bildschirm zu beschränken, der verwendet wird.

Dies tun Sie in XCode, indem Sie auf Ihren präsentierenden Controller klicken und das Kontrollkästchen Defines Context auswählen. Im Code können Sie definesPresentationContext auf TRUE setzen.

Damit dies für Sie nützlich ist, müssen Sie den Rahmen für den präsentierenden Controller nicht als Vollbild anzeigen lassen. Die ideale Situation wäre, dass dies ein Controller in einem UINavigationController ist.

Optionen:

1) sind Ihr präsentierenden Controller in einer Navigationssteuerung mit einer Navigationsleiste. Effektiv ist es ein Kindercontroller. Die Größe des Bildschirmabdrucks hängt davon ab, ob er unter die oberen und unteren Balken fällt. a) Stellen Sie Ihren Controller so ein, dass der Inhalt nicht unter die oberen Balken fällt. Dies macht den Rahmen effektiv unter der Navigationsleiste. b) Wenn Sie callServiceWithCurrentView anrufen, fügen Sie eine Abbrechen-Schaltfläche in der Navigationsleiste hinzu. c) Wenn Sie den Controller so einstellen, dass er den Präsentationskontext richtig definiert, sollte das UIWebView in der Navigationsleiste erscheinen und Sie können Ihre neue Abbrechen-Schaltfläche sehen.

2) Wenn Sie nicht in einem Navigationscontroller sind, fügen Sie einen Kindercontroller innerhalb einer Unteransicht hinzu, über die Sie den Abbrechen-Button setzen, anstatt die Methode direkt aufzurufen. Lassen Sie diesen Kindercontroller den Anruf callServiceWithCurrentView ausführen. Befolgen Sie den gleichen Mechanismus, indem Sie diesen untergeordneten Controller den Kontext definieren. Jedes modale UIWebView sollte dann nur den Bereich des Kind-Controllers abdecken.

Hoffe das gibt Ihnen einige Möglichkeiten.

+0

Ich habe den ersten Weg versucht, aber nicht funktioniert https://drive.google.com/file/d/0Bzk4QVQhnqKmb04wTTVsT3ZOQUU/view?usp=sharing –

+0

@copeME Ich habe Option 2 für Sie auch und keine Freude. Wenn man genauer hinschaut, scheint es, dass das Paysbuy-SDK nicht modal präsentiert wird, sondern den Root-Controller vollständig zu ersetzen scheint. Deshalb ändert sich der Bildschirm schnell. Auch wenn Sie mit dem 3D-Ansichtshierarchie-Tool schauen, sind die ursprünglichen Controller nicht dahinter. Leider bedeutet das, dass Sie nicht viel tun können, wenn Sie nicht die SDK-Autoren kontaktieren. Es ist merkwürdig, dass sie ein SDK erstellen würden, das alle Kontrolle vom Moderator entfernt. Es scheint, der einzige Weg zurück ist es, zahlen 8 ^). –

+0

Ja, ich habe versucht, die 3D-Ansicht und es gab keine Hierarchie gesehen .... sogar Benutzer zahlen erfolgreich Ich glaube nicht, dass die Aussicht wird entlassen .. ??? –

Verwandte Themen