3

在我正在开发的应用程序中,我有操作表和警报视图,当应用程序进入非活动/后台状态时,我希望将其关闭。

我正在使用 UIApplicationWillResignActiveNotification 而不是 UIApplicationDidEnterBackgroundNotification,因为我希望代码与 iOS3.2 兼容。

-(void)applicationWillResignActive:(Notification *)notification{
    if (self.actionSheet && self.actionSheet.visible){
        NSLog(@" actionSheet is Visible");
        [self.actionSheet dismissWithClickedButtonIndex:0 animated:NO];
    }
}

在模拟器(iphone 3.2,iOS4)中测试这个,在actionSheet可见的情况下,我按下主页按钮,但我没有收到“actionSheet is Visible”消息。然而,当我重新打开应用程序并使用主页按钮再次关闭它时,我收到“actionSheet is Visible”消息。

这表明第一次没有设置 actionSheet 的 visible 属性。设置属性会不会有延迟?事实上,我在显示 actionSheet 的方法中添加了一条消息

[self.actionSheet showInView:self.parentViewController.tabBarController.view];
if (self.actionSheet.Visible) NsLog(@" action Sheet visible");

即使在这里我也没有收到消息。可见属性设置在哪里/何时?我在试图解除 actionSheet 时做错了什么?我在 SO 中看到了类似的非常好的和详细的解决方案,但它们似乎没有涵盖这个问题。任何帮助都感激不尽。

4

1 回答 1

2

为什么你甚至需要检查它是否可见?事实上,你为什么还要对照 nil 来检查它?你可以放[self.actionSheet dismissWithClickedButtonIndex:0 animated:NO];,它应该可以正常工作,就好像操作表存在你会关闭它,如果它不存在,你将只调用 nil 上的方法,它什么都不做。

于 2010-08-14T01:53:59.413 回答