wait_fences: не удалось получить ответ: 10004003? - PullRequest
1 голос
/ 26 августа 2011

Я получаю это загадочное сообщение: wait_fences: не удалось получить ответ: 10004003 Я гуглил, и люди думают, что это как-то связано с неправильным отклонением UITextField или Alert. У меня есть одно текстовое поле в моем приложении, и я уверяю вас, что я правильно его отпустил, используя resignFirstResponder и т. Д. Я получаю это сообщение, когда открываю MPMusicPickerController из подпредставления, имеет ли это какое-то значение. Мне действительно нужно исправить это, потому что это портит все мое приложение!

Спасибо, Бред

Edit1:

    - (IBAction)openMediaPicker:(id)sender {
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
    MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAny];
    mediaPicker.delegate = self;
    mediaPicker.allowsPickingMultipleItems = YES;
    mediaPicker.prompt = @"Select songs to play";
    [self presentModalViewController:mediaPicker animated:YES];
    [mediaPicker release];
} 

// Media picker delegate methods
- (void)mediaPicker: (MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection {

    AppAppDelegate *appDelegate = (AppAppDelegate *)[[UIApplication sharedApplication] delegate];
    [appDelegate.tr2 stop];
    [playstopButton setHidden:NO];
    [playstopButton setImage:[UIImage imageNamed:@"Stop-Music-Button.png"] forState:UIControlStateNormal];
    // We need to dismiss the picker
    [self dismissModalViewControllerAnimated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];

    // Assign the selected item(s) to the music player and start playback.
    [self.musicPlayer stop];
    [self.musicPlayer setQueueWithItemCollection:mediaItemCollection];
    [self.musicPlayer play];

}

- (void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker {
    // User did not select anything
    // We need to dismiss the picker
    [self dismissModalViewControllerAnimated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
}

Ответы [ 2 ]

4 голосов
/ 09 января 2012

Обычно:

  1. Вы не должны делать анимацию в viewWillAppear только в viewDidAppear.Подготовьте свои данные, розетки и т. Д. Только в viewWillAppear.

  2. Также очень распространенный случай, когда может возникнуть wait_fences, - это когда у вас есть анимированный диалог (например, MPMediaPickerController)это приводит к появлению другого анимированного представления (например, пользовательского модального UIViewController) и т. п., в этом случае вам необходимо «отложить» представление второго контроллера представления, например:

        [self performSelector:@selector(showMyOtherViewController) 
                   withObject:nil 
                   afterDelay:0.1];
    

Также проверьте этот ответ https://stackoverflow.com/7194182.

Редактировать

Хороший способ "отладки" конфликтующих анимаций - просто установить анимацию на NO, такв вашем коде вместо

    [self presentModalViewController:mediaPicker animated:YES];
    [self dismissModalViewControllerAnimated:YES];

Просто выполните:

    [self presentModalViewController:mediaPicker animated:NO];
    [self dismissModalViewControllerAnimated:NO];

и проверьте, исчезла ли ошибка wait_fences и достигнуто ли правильное поведение (но без анимации).Если дело обстоит именно так, вам нужны некоторые из performSelector:withObject:afterDelay: -магов.

Редактировать: Обратите внимание, что в iOS 5.0 вы можете делать следующее:

[self dismissViewControllerAnimated:YES completion:^{
    [self presentViewController:anotherViewController animated:YES completion:NULL]
}

Это означает, что во-первых, представленный в настоящий момент View Controller (например, ModalViewController) отклоняется, и когда анимация завершается, вы можете вызвать другой блок.В этом случае показать еще UIViewController

0 голосов
/ 15 апреля 2013

Я также заметил, что замена clickedButtonAtIndex: didDismissWithButtonIndex: при использовании UIActionSheet или UIAlertView кажется, что сообщение об ошибке исчезает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...