当来自锁屏iphone时,重新绘制GUI上的didreceivelocalnotification

时间:2011-04-23 18:33:01

标签: ios4 uilocalnotification lockscreen

如何在收到UILocalNotification后从锁定屏幕返回时阻止我的GUI重绘?在didReceiveLocalNotification中,我提供了一个模态视图,但我的视图控制器的旧状态在此之前显示了一会儿。我该如何防止这种情况?

当我从后台返回本地通知时,我获得的事件顺序如下:

1. UIApplicationWillEnterForegroundNotification
2. UIApplicationDidBecomeActiveNotification
3. didReceiveLocalNotification

当我来自锁定屏幕时:

1. didReceiveLocalNotification
2. UIApplicationDidBecomeActiveNotification

为什么会出现这种差异以及是否还有其他我缺失的东西?

谢谢

2 个答案:

答案 0 :(得分:3)

这是如何解决的。可能不是这样,但它对我有用。因为我的应用程序是voip / audio,所以它不会来didFinishLaunchingWithOptions ...我发现,当iOS从后台或睡眠模式恢复时,iOS使用来自先前状态的缓存图像进行动画。所以解决方案基本上是用我的default.png图像交换这个缓存的图像。我在applicationWillResignActive委托中执行此操作。在那里,我添加了一个带有Default.png图片的模态视图,并在applicationDidBecomeActive中将其关闭。这真的很简短。希望它能帮助其他人解决同样的问题。

答案 1 :(得分:1)

您可以提供从本地通知启动/恢复时显示的自定义图像。只需将本地通知上的alertLaunchImage属性设置为正确图像的名称即可。

来自文档:

  

字符串是应用程序包中图像文件的文件名。该图像是为给定通知指定的启动图像;当用户点击动作按钮(例如,“查看”)或移动动作滑块时,将使用图像代替默认的启动图像。如果此属性的值为nil(缺省值),则系统使用上一个快照,使用应用程序的Info.plist文件中UILaunchImageFile键标识的图像,或者回退到Default.png。

alertLaunchImage