在SDK中实现自定义取消按钮

时间:2015-08-17 06:43:15

标签: ios swift payment cancel-button

我希望使用paysbuy SDK实现付款功能....问题是它没有任何cancel选项,以便用户可以在付款成功后取消关闭操作

默认情况下,SDK提供了一种方法,可以打开覆盖屏幕整个部分的默认WebView。并且没有任何cancel选项..

我只想在特定的cancel ..或view加载付款时添加viewcontroller按钮。我尝试在container查看...加载container视图中的视图和cancel视图外的container按钮,但是当我尝试此过程时,默认情况下会在全屏WebView中显示。创建PopUP但未成功

那么,如何在webview的特定部分加载SDK view,以便我可以放置Cancel按钮?

这是sdk提供的启动服务的方法

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

我们可以看到callServiceWithCurrentView方法将目标显示为currentviewcontroller,因此我认为默认情况下full screen模式会加载viewcontroller ....

以下是我在swift中实现的方法

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

在成功或失败时处理响应的委托方法

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")

        }

    }

}

这是我做过的工作.... https://drive.google.com/file/d/0Bzk4QVQhnqKmVno5NGdPUV9ITkE/view?usp=sharing

1 个答案:

答案 0 :(得分:7)

模态控制器在控制器的帧上下文中呈现,被视为定义表示上下文。

您拥有的一个选项是让调用callServiceWithCurrentView的控制器为任何模态演示定义上下文,然后可以使用它来限制所使用的屏幕区域。

您可以通过单击演示控制器并选择“定义上下文”复选框在XCode中执行此操作。在代码中,您可以将definesPresentationContext设置为TRUE。

为了对您有用,您需要显示控制器的框架不是全屏。理想情况是这是UINavigationController中的控制器。

选项:

1)您的演示控制器位于带导航栏的导航控制器内。实际上它是一个儿童控制器。它使用的屏幕占用面积取决于它是否位于顶部和底部条形下方。   a)设置控制器,使内容不在顶部栏下面。这有效地使框架位于导航栏下方。   b)当您致电callServiceWithCurrentView时,在导航栏上添加取消按钮。   c)如果您将控制器设置为正确定义演示文稿上下文,则UIWebView应显示在导航栏下方,您可以看到新的取消按钮。

2)如果不在导航控制器中,则不是直接调用该方法,而是在子视图中添加子控制器,在该子视图上放置取消按钮。让这个子控制器进行呼叫callServiceWithCurrentView。遵循相同的机制,使这个子控制器定义上下文。然后,任何模态UIWebView都应该只覆盖子控制器的区域。

希望这能为您提供一些选择。