0

この質問をしたところバックグラウンドでコードを実行してリターンコードを取得する

そして、バックグラウンドタスクの最終コードを実行中に、アクティビティインジケーター付きの 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 で受け入れられた回答と同じコードです。その直後に、ViewDidLoad で同様のことを行う新しい UIViewController が表示されます。

    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 を表示していました。インターネット接続を確認するための最初のアラートビューはうまく表示されますが、2番目のアラートビューはそうではありません...

画像

両方がまったく同じコードを持っている場合、最初に alerView 内にインジケーターを表示し、2番目に alertView の外に表示する理由を本当に理解できません。

そして、それがうまく機能していたことを追加する前に、最初の UIAlertView を追加した後にのみ発生します。

私はこれに本当にこだわっています。解決策が見つかりません。

誰でも何か考えがありますか?

編集

簡単な方法で解決します。ハードコードするだけです。

そうです、alert.frame が設定されていないようです。おそらくこの質問に似ています: Question

indicator.center = CGPointMake(140, 70);
4

1 に答える 1

0

MBProgressHudクラスを確認する

UIActivityIndi​​catorView と MBProgressHUD (@ mobile.tutsplus.com)

そしてまた

MBProgressHUD (@github.com)

それはあなたを助けるかもしれません。

于 2013-05-23T11:22:52.897 に答える