我弹出UIAlertView
来询问用户是否真的要打开网址。如果他们选择“是”,我的应用会立即打开该网址并发送到后台。当用户重新打开我的应用程序(具有多任务处理)时,警报视图并未完全消失并处于半透明状态。据推测,在多任务处理中使用的屏幕截图是在警报视图完全消失之前拍摄的,但在它开始逐渐消失之后。
如何为我的应用程序提供完全取消警报视图所需的额外秒数?看起来我应该在-applicationDidEnterBackground:
中做一些事情或者在视图控制器中听取等效通知,但我不确定最好的方法。
答案 0 :(得分:3)
你应该致电- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
。在iOS 4中,当应用移动到后台时,警报视图不会自动被忽略。
答案 1 :(得分:0)
我听说过这种情况 - 背景屏幕截图发生在触发背景的动画中间。
您可以使用[self performSelector: withObject: afterDelay:]
在解除警报和应用程序背景之间插入一些时间。 withDelay
是一个浮点数并接受几分之一秒,所以你可以很好地微调它。
答案 2 :(得分:0)
以防万一其他人正在寻找适合我的代码,这里是:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 1) { // Ok button
// URL to be opened
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", [self phoneNumber]]];
[alertView dismissWithClickedButtonIndex:buttonIndex animated:YES];
[[UIApplication sharedApplication] openURL:url];
}
}