当应用程序在iOS4上进入后台时,忽略UIActionSheet

时间:2010-08-13 23:30:30

标签: iphone uiactionsheet dismiss

在我正在处理的应用程序中,我有行动表和警报视图,当应用程序进入非活动状态/后台状态时,我希望这些视图被忽略。

我正在使用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");

即使在这里,我也没有收到消息。 where / when是可见属性集?试图解雇actionSheet我是否做了一些根本性的错误?我已经看到类似的非常好的和详细的解决方案解决了在...中的alertViews ....但他们似乎并没有涵盖这个问题。任何帮助都感激不尽。

1 个答案:

答案 0 :(得分:2)

为什么你甚至需要检查它是否可见?事实上,为什么你甚至需要检查nil?您可以放置​​[self.actionSheet dismissWithClickedButtonIndex:0 animated:NO];,它应该可以正常工作,就像操作表存在一样,您将忽略它,如果没有,您将只调用nil上的方法,它什么都不做。