1

ビデオを録画してサーバーに保存するアプリを作成しました。アプリケーションに HUD を追加したいと思います。この HUD は、データがサーバーに保存されるまで表示されます。

サーバーにデータを投稿するために MKNetworkKit を使用しています。

私はこれを試しました:

- (void) imagePickerController: (UIImagePickerController *) picker
 didFinishPickingMediaWithInfo: (NSDictionary *) info {

    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];

    //NSLog(@"medea type is: %@ ",mediaType);

    if ([mediaType isEqualToString:@"public.movie"]){
      //  NSLog(@"got a movie");
        NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
        webData = [NSData dataWithContentsOfURL:videoURL];

    }

    [self dismissModalViewControllerAnimated:NO];

    // Handle a movie capture
    if (CFStringCompare ((__bridge_retained CFStringRef) mediaType, kUTTypeMovie, 0)
        == kCFCompareEqualTo) {

        NSString *moviePath = [[info objectForKey:
                                UIImagePickerControllerMediaURL] path];
        if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) {
            UISaveVideoAtPathToSavedPhotosAlbum (moviePath,self, @selector(video:didFinishSavingWithError:contextInfo:), nil);
        } 
    }

    self.flUploadEngine = [[fileUploadEngine alloc] initWithHostName:@"reneveledat.net" customHeaderFields:nil];

    NSMutableDictionary *postParams = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       @"testApp", @"appID",
                                       nil];      
    self.flOperation = [self.flUploadEngine postDataToServer:postParams path:@"/dilipvideotest/savefile.php"];
    [self.flOperation addData:webData forKey:@"uploadfile" mimeType:@"video/mov" fileName:@"upload.mov"];

    [self.flOperation onCompletion:^(MKNetworkOperation *operation) {

        NSLog(@"response string is : %@", [operation responseString]);

        response = [operation responseString] ;
[HUD removeFromSuperview];
        /*   
         This is where you handle a successful 200 response
         */
    }     
                           onError:^(NSError *error) {
                               NSLog(@"error : %@", error);
                               UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                                               message:[error localizedDescription]
                                                                              delegate:nil
                                                                     cancelButtonTitle:@"Dismiss"
                                                                     otherButtonTitles:nil];
                               [alert show];        
                           }];



    [self.flUploadEngine enqueueOperation:self.flOperation ];

    // for HUD

    HUD = [[MBProgressHUD alloc] initWithView:self.view];
    HUD.labelText = @"Doing funky stuff...";
    HUD.detailsLabelText = @"Just relax";
    HUD.mode = MBProgressHUDModeAnnularDeterminate;
    [self.view addSubview:HUD];

    [HUD showWhileExecuting:@selector(doSomeFunkyStuff) onTarget:self withObject:nil animated:YES];


   }

- (void)doSomeFunkyStuff {
    float progress = 0.0;

    while (progress < 1.0) {
        progress += 0.01;
        HUD.progress = progress;
        usleep(50000);
    }
}

編集

今終わった

私はちょうどこのコードを追加しました

[HUD removeFromSuperview];

[self.flOperation onCompletion:^(MKNetworkOperation *operation) {

            NSLog(@"response string is : %@", [operation responseString]);

            response = [operation responseString] ;
    [HUD removeFromSuperview];
            /*   
             This is where you handle a successful 200 response
             */
        }  
4

1 に答える 1

0

ビューに MBProgressHUD を追加しています。

データがサーバーにアップロードされた後、それを削除する必要があります。

そのため、完了ブロックとエラー ブロック内に削除コードを記述する必要があります。

お気に入り:

[self.flOperation onCompletion:^(MKNetworkOperation *operation)
{
    [MBProgressHUD hideHUDForView:self.view animated:YES];
    NSLog(@"response string is : %@", [operation responseString]);
    response = [operation responseString] ;
}     
onError:^(NSError *error)
{
   [MBProgressHUD hideHUDForView:self.view animated:YES];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
    [alert show];        
}];
于 2012-10-31T13:57:19.417 に答える