在 iOS 7 原生登录弹出窗口中处理取消的选择

Posted

技术标签:

【中文标题】在 iOS 7 原生登录弹出窗口中处理取消的选择【英文标题】:Handling the selection of Cancel in iOS 7 native login popup 【发布时间】:2013-12-30 05:48:56 【问题描述】:

我正在编写一些与应用内购买相关的代码。当我启动应用内购买时,ios 会弹出一个原生登录弹出窗口,如下图所示。我也开始制作动画 UIActivityIndi​​catorView。如果用户选择取消选项,我想停止 UIActivityIndi​​catorView 的动画。在 iOS 7 本机登录弹出窗口中处理取消选择的方法是什么。

以下函数未被调用:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

【问题讨论】:

你是否为 UIAlertView 设置了委托...... 我猜对于系统生成的UIAlertView,我们无法收到任何委托呼叫。 @IronManGill 但是,这个弹出窗口来自系统。我没有在这里显示 UIAlertView。如果我需要明确设置委托,你能告诉我该怎么做吗?调用此弹出窗口的代码是 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 【参考方案1】:
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error

当用户在恢复警报时按下取消时,将调用上述方法。

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

    for (SKPaymentTransaction *transaction in transactions)
    
        switch (transaction.transactionState)
        
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                [self failedTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:
                [self restoreTransaction:transaction];
            default:
                break;
        
    

当用户按下取消按钮时,SKPaymentTransactionStateFailed 会被调用,注意:并非总是如此,也会调用其他一些响应

【讨论】:

我刚刚检查并发现如果用户选择取消,-paymentQueue 不会被调用。可以反复检查确认吗? 成功了!感谢您的正确答案! -(void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error

以上是关于在 iOS 7 原生登录弹出窗口中处理取消的选择的主要内容,如果未能解决你的问题,请参考以下文章

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

苹果手机怎么阻止弹出网页?

Checkbox/RadioButton 选择和取消选择弹出窗口中的所有复选框

如何关闭 iOS 相机访问弹出窗口?

c# 弹出选择窗口

如何使用 Selenium WebDriver 处理登录弹出窗口?