【发布时间】:2013-10-08 14:36:53
【问题描述】:
我有一个采购清单:
item 1 $0.99 Buy
item 2 $1.99 Buy
item 3 $2.99 Buy
当我点击购买按钮时,会出现“确认您的应用内购买”警告窗口。无论我选择“购买”还是“取消”,这个警告窗口都会消失(这是正确的),但是购买列表视图控制器会弹出到它的父视图控制器。我不知道为什么。
我尝试了很多方法,得到了相同的结果——当我单击“确认您的应用内购买”警告窗口“取消”或“购买”按钮时,列表视图控制器将弹出。只是告诉为什么。
这是列表视图中点击支付按钮的代码:
- (void)buyButtonTapped:(id)sender {
UIButton *buyButton = (UIButton *)sender;
NSString *searchString ;
if (buyButton.tag == 0) {
searchString = PURCHASES_REMOVE_AD;
}else if (buyButton.tag == 1){
searchString = PURCHASES_COFFEE;
}else if (buyButton.tag == 2){
searchString = PURCHASES_MONEY;
}
for (SKProduct *product in _products) {
if ([product.productIdentifier isEqualToString:searchString]) {
[[RageIAPHelper sharedInstance] buyProduct:product];
break;
}
}
}
然后我来到这个页面:
正如你在这张图片中看到的,当我点击“取消”或“购买”按钮时,“购买”视图控制器将消失回父视图控制器,
- (void)failedTransaction:(SKPaymentTransaction *)transaction {
NSLog(@"failedTransaction...");
if (transaction.error.code != SKErrorPaymentCancelled)
{
NSLog(@"Transaction error: %@", transaction.error.localizedDescription);
}
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
这是我点击取消按钮的代码,没有发现任何问题。
更新
我终于明白了。我在 - (void)applicationDidBecomeActive:(UIApplication *)application 中创建列表视图的父视图控制器。现在我将创建移动到 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 问题消失了。谁能告诉我为什么?
【问题讨论】:
-
为什么要投票给我,至少请给我一个理由!!!
-
当您的视图将移动到不同的父级时添加一个断点。尝试找出触发视图更改的原因。您是否添加了一些正在执行此操作的代码(我假设答案是肯定的)。
-
感谢您的回复@Wain 查看我的更新。
-
好的,将某些东西作为导航控制器的委托或子类,并在弹出视图控制器时添加断点。你需要找到触发器。
-
我在列表视图设置断点 -(void)viewWillDisappear 在单击取消按钮后发现 - (void)applicationDidBecomeActive:(UIApplication *)AppDelegate.m 中的应用程序被调用...
标签: ios in-app-purchase