在 iOS 7 原生登录弹出窗口中处理取消的选择
Posted
技术标签:
【中文标题】在 iOS 7 原生登录弹出窗口中处理取消的选择【英文标题】:Handling the selection of Cancel in iOS 7 native login popup 【发布时间】:2013-12-30 05:48:56 【问题描述】:我正在编写一些与应用内购买相关的代码。当我启动应用内购买时,ios 会弹出一个原生登录弹出窗口,如下图所示。我也开始制作动画 UIActivityIndicatorView。如果用户选择取消选项,我想停止 UIActivityIndicatorView 的动画。在 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 原生登录弹出窗口中处理取消的选择的主要内容,如果未能解决你的问题,请参考以下文章