使用UIActivityIndi​​cator的奇怪的UIAlertView

时间:2013-05-23 11:16:35

标签: ios objective-c

我刚刚问了这个问题Run code on background and get return code

我在执行后台任务时使用带有活动指示符的UIAlertView,最终代码:

    -(void)isConnectedToInternet:(void (^)(BOOL))block
{
    palert = [[UIAlertView alloc]initWithTitle:@"Comprobando conexión a internet" message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
    [palert show];

    if(palert != nil) {
        UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

        indicator.center = CGPointMake(palert.bounds.size.width/2, palert.bounds.size.height-45);
        [indicator startAnimating];
        [palert addSubview:indicator];
    }

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:
                                    [NSURL URLWithString:@"http://www.google.com/"]];

    [request setHTTPMethod:@"HEAD"];

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
        NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
        if (block) {
            [palert dismissWithClickedButtonIndex:0 animated:YES];
            block( ([httpResponse statusCode] == 200) ? YES : NO);
        }
    }];

与UIAlertView接受的答案相同的代码,就在我显示一个新的UIViewController,在ViewDidLoad上做类似的事情之后。

    alerta = [[UIAlertView alloc]initWithTitle:@"Descargando..." message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
[alerta show];

if(alerta != nil) {
    UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

    indicator.center = CGPointMake(alerta.bounds.size.width/2, alerta.bounds.size.height-45);
    [indicator startAnimating];
    [alerta addSubview:indicator];
}

我使用相同的代码很久以前就用活动指示器显示UIAlertView,检查互联网连接的第一个警报视图显示良好,但第二个没有...

Image

我真的无法理解为什么第一个在alerView中显示指示符,第二个在alertView之外显示它们,如果它们具有完全相同的代码。

只有在添加第一个UIAlertView之后才会发生这种情况,然后再添加它才能正常运行。

我真的坚持这个我无法找到解决方案。

任何人都有一些想法?

修改

简单方法解决方案,我只是硬编码。

而且似乎没有设置alert.frame,可能类似于这个问题:Question

indicator.center = CGPointMake(140, 70);

1 个答案:

答案 0 :(得分:0)

检查MBProgressHud班级

UIActivityIndicatorView and MBProgressHUD(@ mobile.tutsplus.com)

以及

MBProgressHUD(@ github.com)

它可能对你有帮助。