2010-06-26 4 views
0

Я дразнил свой мозг, пытаясь понять это: я играю несколько видео с MoviePlayerViewController, но когда я пытаюсь встряхнуть, чтобы воспроизвести случайное видео с помощью акселерометра, я получаю сбой, когда он пытается переключиться на новый фильм.Переход с MoviePlayerViewController, вызывающий сбой

Вот код, который играет в фильме:

  -(void)playMovieAtURL:(NSURL*)theURL { 
     MPMoviePlayerViewController* theMovie=[[MPMoviePlayerViewController alloc] initWithContentURL:theURL]; 

      if (theMovie){ 
     [self presentMoviePlayerViewControllerAnimated:theMovie]; 
      theMovie.moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
     [theMovie.moviePlayer play]; 
     [theMovie release]; 
    } 
} 

А вот код акселерометр:

- (void) accelerometer: (UIAccelerometer *)accelerometer didAccelerate: (UIAcceleration *)acceleration { 
if (self.lastAcceleration) { 
    if (!shakeDetected && IsDeviceShaking(self.lastAcceleration, acceleration, 0.7)) { 
     shakeDetected = YES; 


NSLog(@"Shake detected"); 

    int filescount = [entries count]; 
    int randomIndex; 

    for(int index = 0; index < filescount; index++) 
    { 
    randomIndex= arc4random() % filescount; 
    [entries exchangeObjectAtIndex:index withObjectAtIndex:randomIndex]; 
    } 

    AppRecord *app = [entries objectAtIndex:randomIndex]; 
    contentController.detailItem = app; 
    [self playMovieAtURL:[NSURL URLWithString:app.applink]]; 
    } 
    else if (shakeDetected && !IsDeviceShaking(self.lastAcceleration, acceleration, 0.2)) { 
      shakeDetected = NO; 
     } 
    } 
self.lastAcceleration = acceleration; 
} 

Катастрофа происходит при переключении видео на этом месте:

[self presentMoviePlayerViewControllerAnimated:theMovie]; 

Ошибка отладчика, когда я встряхиваю, чтобы изменить видео:

Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Попытка начать модальный переход от UINavigationController к MPMoviePlayerViewController, когда переход уже выполняется. Подождите, пока viewDidAppear/viewDidDisappear узнает, что текущий переход завершен. '

Любые предложения и идеи приветствуются. Спасибо!!

+0

Вы нашли способ решить эту проблему (кроме вызова метода некоторых переломов через секунду)? – stk

ответ

0

У меня возникла аналогичная проблема при установке приложения на устройство впервые. Когда я пытаюсь воспроизвести видео, приложение падает. Я также использую [self presentMoviePlayerViewControllerAnimated: theMovieView]; вызов. Вот дамп стека из отладчика.

#0 0x3037fd7c in ___forwarding___ 
#1 0x30312680 in __forwarding_prep_0___ 
#2 0x35203dee in -[MPMoviePlayerViewController viewDidAppear:] 
#3 0x324128bc in -[UIWindowController transitionViewDidComplete:fromView:toView:] 
#4 0x323959da in -[UITransitionView notifyDidCompleteTransition:] 
#5 0x3239588e in -[UITransitionView _didCompleteTransition:] 
#6 0x32412556 in -[UITransitionView _transitionDidStop:finished:] 
#7 0x3237a97a in -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] 
#8 0x3237a884 in -[UIViewAnimationState animationDidStop:finished:] 
#9 0x343557c0 in run_animation_callbacks 
#10 0x34355662 in CA::timer_callback 
#11 0x30352a5a in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ 
#12 0x30354ee4 in __CFRunLoopDoTimer 
#13 0x30355864 in __CFRunLoopRun 
#14 0x302fe8ea in CFRunLoopRunSpecific 
#15 0x302fe7f2 in CFRunLoopRunInMode 
#16 0x31a776ee in GSEventRunModal 
#17 0x31a7779a in GSEventRun 
#18 0x323272a6 in -[UIApplication _run] 
#19 0x32325e16 in UIApplicationMain 
#20 0x000022ca in main at main.m:14 
Смежные вопросы