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

     2023-02-22     293

关键词:

【中文标题】在 SDK 中实现自定义取消按钮【英文标题】:Implement custom Cancel Button in a SDK 【发布时间】:2015-11-09 17:24:08 【问题描述】:

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

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

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

那么,我如何将SDKwebview 加载到我的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,所以我认为它在viewcontroller 上默认以full screen 模式加载....

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

【问题讨论】:

您无法在 webview 上添加取消按钮,因为您无法控制它,我认为解决此问题的一个解决方案是您必须在函数并尝试将第二个 UIViewController 设为高度较小或类似的弹出窗口 @VarunNaharia 问题似乎是正在使用的 SDK 替换了根控制器。因此,当它接管时,无法控制屏幕上的内容。 @VarunNaharia 我试着按照你说的做,但效果不好......它显示我默认全屏......尝试在弹出窗口,容器视图上使用,正如 rory 在答案中所说......但是它们都不起作用 试试这个***.com/questions/17758420/… 并尝试在每个视图顶部制作一个按钮 我已经尝试过使用容器视图... 【参考方案1】:

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

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

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

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

选项:

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

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

希望这能给你一些选择。

【讨论】:

我尝试了第一种方法但不起作用drive.google.com/file/d/0Bzk4QVQhnqKmb04wTTVsT3ZOQUU/… @copeME 我也为您尝试了选项 2,但没有任何乐趣。更深入地看,paysbuy SDK 似乎没有以模态方式呈现,而是似乎完全取代了根控制器。这就是画面变化很快的原因。此外,如果您使用 3D 视图层次结构工具查看,原始控制器不在其后面。遗憾的是,我认为这意味着除了联系 SDK 作者之外,您无能为力。奇怪的是,他们会创建一个 SDK 来移除演示者的所有控制权。看来唯一的退路就是支付 8^)。 是的,我尝试了 3d 视图,但没有看到层次结构....即使用户支付成功,我认为视图不会被驳回..??? @copeME 是的,似乎坏了。您从哪里获得 SDK 代码?我在网上找不到。您需要 callServiceWithCurrentView 的代码或作者的修复。 我给 paysbuy 写了一封电子邮件,他们给我发了 sdk...我也写了一封电子邮件,告诉我如何计算取消选项,但没有回复...

在 MembershipProvider 中实现自定义“ValidateUser”

】在MembershipProvider中实现自定义“ValidateUser”【英文标题】:Implementcustom"ValidateUser"inMembershipProvider【发布时间】:2011-03-2510:32:38【问题描述】:我正在实现一个自定义MembershipProvider,我正在尝试使用ValidateUser方法来验证... 查看详情

如何在 iPhone 中实现自定义相机功能? [关闭]

】如何在iPhone中实现自定义相机功能?[关闭]【英文标题】:HowtoimplementcustomcamerafunctionalityiniPhone?[closed]【发布时间】:2011-08-1605:07:13【问题描述】:我想开发一种功能,以便在iPhone应用程序中实现自定义相机功能,所以请给我... 查看详情

如何在 keras 中实现自定义指标?

】如何在keras中实现自定义指标?【英文标题】:howtoimplementcustommetricinkeras?【发布时间】:2016-10-0601:13:54【问题描述】:我得到这个错误:sum()得到了一个意外的关键字参数\'out\'当我运行这段代码时:importpandasaspd,numpyasnpimportkera... 查看详情

在具有条件的 keras 中实现自定义损失函数

】在具有条件的keras中实现自定义损失函数【英文标题】:Implementingcustomlossfunctioninkeraswithcondition【发布时间】:2018-12-0813:49:59【问题描述】:我需要一些有关keras损失函数的帮助。我一直在使用Tensorflow后端在keras上实现自定义损... 查看详情

在 Freemarker 中实现自定义 Escaper

】在Freemarker中实现自定义Escaper【英文标题】:ImplementaCustomEscaperinFreemarker【发布时间】:2010-11-0920:21:59【问题描述】:Freemarker可以使用以下方式进行文本转义:<#escapexasx?html>Foo:$someValBar:$someOtherVal</#escape>xml、xhtml和html... 查看详情

为啥不推荐使用 JScript 在 WiX 中实现自定义操作?

】为啥不推荐使用JScript在WiX中实现自定义操作?【英文标题】:WhyisusingJScriptforimplementingcustomactionsinWiXnotrecommended?为什么不推荐使用JScript在WiX中实现自定义操作?【发布时间】:2013-07-1008:19:33【问题描述】:在浏览有关WiX的文... 查看详情

如何在canvas中实现自定义路径动画(代码片段)

在最近的项目中笔者需要做一个新需求:在canvas中实现自定义的路径动画。这里所谓的自定义路径不单单包括一条直线,也许是多条直线的运动组合,甚至还包含了贝塞尔曲线,因此,这个动画也许是下面这个样子的:那么如何... 查看详情

在 kvm 中实现自定义超级调用

】在kvm中实现自定义超级调用【英文标题】:Implementingacustomhypercallinkvm【发布时间】:2016-02-0900:28:27【问题描述】:我对虚拟化非常陌生,最近我一直在尝试熟悉VMM的操作方式以及如何进行超级调用。谈到我打算在安装在我的Ubu... 查看详情

如何在黄瓜中实现自定义监听器?

】如何在黄瓜中实现自定义监听器?【英文标题】:Howtoimplementcustomlistenersincucumber?【发布时间】:2021-12-2214:55:47【问题描述】:如何在cucumber中实现客户监听?哪个可以记录到控制台/报告失败方法的发生?使用黄瓜4.0注意:钩... 查看详情

在spring boot中实现自定义错误

】在springboot中实现自定义错误【英文标题】:Implementthecustomerrorinspringboot【发布时间】:2019-04-0702:58:26【问题描述】:我想页面。在应用程序中,id是主键,所以当没有给出id时,它会将请求传输到页面,但我希望应用程序在索... 查看详情

如何在 TCPDF 中实现自定义字体

】如何在TCPDF中实现自定义字体【英文标题】:HowtoimplementcustomfontsinTCPDF【发布时间】:2011-07-1222:11:47【问题描述】:在TCPDF中,只有几种字体可供选择,用于创建pdf文件。我想将Tahoma设置为我的pdf字体。如何在TCPDF中包含Tahoma?... 查看详情

在 Android 中实现自定义 ListView

】在Android中实现自定义ListView【英文标题】:ImplementacustomListViewinAndroid【发布时间】:2016-10-2802:16:18【问题描述】:我在我的MainActivity中创建了一个listView,并为行布局创建了另一个布局文件,如下所示:问题是,我该如何实现... 查看详情

如何在自定义 Spring 存储库中实现自定义方法? [复制]

】如何在自定义Spring存储库中实现自定义方法?[复制]【英文标题】:Howtoimplementcustommethodincustomspringrepository?[duplicate]【发布时间】:2016-03-2719:36:21【问题描述】:假设我想要一个方法,获取超级主客户,有id=0。我有客户类:@Ent... 查看详情

在 MVC 中实现自定义身份和 IPrincipal

】在MVC中实现自定义身份和IPrincipal【英文标题】:ImplementingaCustomIdentityandIPrincipalinMVC【发布时间】:2010-12-2510:29:21【问题描述】:我有一个基本的MVC2beta应用程序,我正在尝试实现自定义身份和主体类。我创建了实现IIdentity和IPr... 查看详情

如何在 JSON.NET 中实现自定义 JsonConverter?

】如何在JSON.NET中实现自定义JsonConverter?【英文标题】:HowtoimplementcustomJsonConverterinJSON.NET?【发布时间】:2011-12-2306:02:32【问题描述】:我正在尝试扩展此处给出的JSON.net示例http://james.newtonking.com/projects/json/help/CustomCreationConverter.... 查看详情

如何在 QT 中实现自定义模型的 removeRow() 函数?

】如何在QT中实现自定义模型的removeRow()函数?【英文标题】:HowtoimplementremoveRow()functionforcustomizedmodelinQT?【发布时间】:2016-03-2404:02:48【问题描述】:我已经搜索了QT文档以供参考,但我有一些问题。这是QTdoc中的实现:boolTableMo... 查看详情

在 Django 中实现自定义模板标签时遇到问题

】在Django中实现自定义模板标签时遇到问题【英文标题】:HavingtroubleimplementingcustomtemplatetagsinDjango【发布时间】:2012-04-0101:23:15【问题描述】:我正在尝试在我的应用程序中实现一些自定义模板标签,并更好地构建它。烦人的部... 查看详情

在 Symfony 4.4 中实现自定义错误控制器

】在Symfony4.4中实现自定义错误控制器【英文标题】:ImplementacustomerrorcontrollerinSymfony4.4【发布时间】:2021-01-2206:34:01【问题描述】:我做了什么:我创建了这个自定义控制器,因为我想向错误页面传递一些额外的变量。#Controller/C... 查看详情