如何在ios中检测系统弹出视图的“取消”按钮?

Posted

技术标签:

【中文标题】如何在ios中检测系统弹出视图的“取消”按钮?【英文标题】:How to detect "Cancel" button of system popup view in ios? 【发布时间】:2015-06-21 08:25:58 【问题描述】:

我正在为应用程序进行应用内购买编码,连接 iTunes 商店时会显示一个活动指示器。当连接正常完成时,Activity Indicator 可以停止,但以下情况除外:

有两个“取消”按钮: 1. 选择购买时,系统会显示一个iTunes商店登录视图,带有“取消”按钮。 2.如果输入密码继续,如果产品之前购买过,可以返回另一个“取消”按钮。

由于活动指示器在步骤 1 开始动画,如果按下两个“取消”按钮中的任何一个将完成该过程,但活动指示器仍在旋转,因为我无法捕捉到取消按钮。

我尝试了“alertView”和“actionSheet”来获取 buttonIndex,但它们在自定义 alertView 中始终有效。

func alertView(View: UIAlertView!, clickedButtonAtIndex buttonIndex: Int)
    println(buttonIndex)


func actionSheet(actionSheet: UIActionSheet, didDismissWithButtonIndex buttonIndex: Int) 
     println(buttonIndex)

任何建议将不胜感激。

【问题讨论】:

您可以使用 applicationDidbecomeActive 通知来检测购买对话框的关闭 【参考方案1】:

为了检测应用内购买何时被取消,您必须设置一个SKPaymentTransactionObserver,当交易更改状态时将通知该SKPaymentTransactionObserver。特别是,当事务更改为SKPaymentTransactionStateFailed 状态时,您会感兴趣,然后您可以关闭活动指示器。

有关 Objective-c 实现,请参阅 here。

【讨论】:

谢谢。添加SKPaymentTransactionObserver 后即可使用。之前我莫名其妙地删除了它,应用程序仍然可以获取产品列表,所以我认为应用程序可以在没有它的情况下运行。

以上是关于如何在ios中检测系统弹出视图的“取消”按钮?的主要内容,如果未能解决你的问题,请参考以下文章

iOS Swift - 使用可以取消的临时 UIView

在 iOS 中单击按钮时,如何在视图控制器顶部显示视图?

按下大视图通知按钮后如何敬酒

在iOS中按下后退按钮时如何创建确认弹出窗口?

通过点击外部或取消按钮在 iOS 中关闭警报视图

如何在 Swift iOS 中创建一个通用的弹出视图控制器