用户在模式视图控制器中按“登录”后,我正在尝试显示UIAlertView
UIActivityIndicator
。要登录,凭据将使用sendAsynchronousRequest:queue:completionHandler:
类中的NSURLConnection
发送到服务器。我的实现如下:
UIAlertView * spinner = [[UIAlertView alloc] initWithTitle:@"Connecting to server..." message:nil delegate:self cancelButtonTitle:nil otherButtonTitles: nil];
[spinner show];
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
indicator.center = CGPointMake(spinner.bounds.size.width * 0.5f, spinner.bounds.size.height * 0.5f+5.0f);
[indicator startAnimating];
[spinner addSubview:indicator];
[indicator release];
[NSURLConnection sendAsynchronousRequest:req queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * res, NSData * data, NSError * err) {
[spinner dismissWithClickedButtonIndex:0 animated:YES];
[spinner release];
...
}
如果无法访问服务器或服务器速度慢,这似乎工作正常,但如果服务器立即回复,则直到3-5秒后控制器记录时,微调器似乎才被解除
wait_fences: failed to receive reply: 10004003
我认为这是因为我正在解雇模态视图控制器(登录屏幕),而UIAlertView
仍在显示,但我不确定为什么会发生这种情况,因为它通常应该被解雇。我做错了什么,这样做的正确方法是什么?
答案 0 :(得分:3)
我多次看过这个日志 - 它总是由内部动画框架中的意外状态或默认视图动画之间的碰撞引起。
可能的原因:
viewDidLoad
,viewWillAppear
内部或类似方法启动动画。UIAlertView
动画仍在运行时显示/隐藏UIAlertView
。这包括显示来自alertView:didDismissWithButtonIndex:
的提醒。UINavigationController
推/动画和警报动画之间的碰撞。您的情况:您可能在完全显示之前隐藏了警报,并且您在两个动画之间发生了碰撞。显示动画通常需要大约0.4秒,但您的响应可以更早到达 - 触发隐藏动画。
可能的解决方案:
didPresentAlertView
)。答案 1 :(得分:0)