8

我想用paysbuySDK实现支付功能......问题是它没有任何cancel选项,以便用户可以在支付成功后取消关闭操作。

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

我只想cancel通过加载特定的付款来添加一个按钮view..viewcontroller或..我尝试在视图中使用container..加载视图内的container视图和视图cancel外的按钮container,但是当我尝试这个过程时,它显示为默认全屏WebView。也尝试创建PopUP但没有成功

那么,如何在我的特定部分加载webviewof ,以便我可以放置一个按钮?SDKviewCancel

这是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

4

1 回答 1

7

模态控制器在控制器的框架上下文中呈现,该控制器被认为定义了呈现上下文。

您可以选择让调用的控制器callServiceWithCurrentView定义任何模态表示的上下文,然后可以使用它来限制屏幕上使用的区域。

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

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

选项:

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

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

希望这能给你一些选择。

于 2015-08-20T15:23:42.320 回答