【问题标题】:dismiss UIActionSheet when App goes in background on iOS4当 App 在 iOS4 上进入后台时关闭 UIActionSheet
【发布时间】:2010-08-14 09:53:59
【问题描述】:

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

我正在使用 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 的可见属性。设置属性会不会有延迟?实际上我在显示actionSheet的方法中放了一条消息

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

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

【问题讨论】:

  • 为什么要在 iOS 3.2 上关闭操作表?当用户退出时,应用程序将被终止,所以没关系。你不妨使用UIApplicationWillResignActiveNotification
  • 嗨,我同意我不需要对 iOS3.2 中的 actionSheet 做任何事情。但我的问题出在 iOS4 上。抱歉,我应该在上面的消息中写 iPhone3G 而不是 iPhone 3.2。

标签: iphone uiactionsheet dismiss


【解决方案1】:

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

【讨论】:

  • 其实我看到苹果的示例代码先检查alertView是否可见,然后调用dismiss方法。
猜你喜欢
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
  • 2013-07-03
相关资源
最近更新 更多