2013-08-02 2 views
0

Я работаю с приложением, которое должно было открыть «MPMoviePlayerViewController» при нажатии на видеофайл.UITextfield не показывает клавиатуру после увольнения из presentMoviePlayerViewControllerAnimated

В наше приложение входит tabbarController с четырьмя навигационными контроллерами для четырех вкладок.

Мое приложение поддерживает только ориентацию на портрет, но видео должно поддерживать как ландшафт & Портретные ориентации. Итак, я создаю подкласс «MPMoviePlayerViewController».

код этого класса ..

@interface MyMovieViewController : MPMoviePlayerViewController 
@end 

@implementation MyMovieViewController 
-(void)viewDidLoad{ 
    [self setWantsFullScreenLayout:NO]; 
} 

-(void)viewWillDisappear:(BOOL)animated{ 
    [self resignFirstResponder]; 
} 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
{ 
    return YES; 
} 
-(BOOL)shouldAutorotate{ 
    return YES; 
} 
@end 

В первой вкладке, я показываю галерея. Существует код для открытия видеофайла.

UIGraphicsBeginImageContext(CGSizeMake(1,1)); 
      MPMoviePlayerViewController * vc = [[MyMovieViewController alloc] initWithContentURL:[[[elcAsset asset] valueForProperty:ALAssetPropertyURLs] valueForKey:[[[[elcAsset asset] valueForProperty:ALAssetPropertyURLs] allKeys] objectAtIndex:0]]]; 
      UIGraphicsEndImageContext(); 
      // Remove the movie player view controller from the "playback did finish" notification observers 
      [[NSNotificationCenter defaultCenter] removeObserver:vc 
                  name:MPMoviePlayerPlaybackDidFinishNotification 
                  object:vc.moviePlayer]; 

      // Register this class as an observer instead 
      [[NSNotificationCenter defaultCenter] 
      addObserver: self 
      selector: @selector(doneButtonClick:) 
      name: MPMoviePlayerPlaybackDidFinishNotification 
      object: vc.moviePlayer]; 

      [self presentMoviePlayerViewControllerAnimated:vc]; 
      [vc.moviePlayer prepareToPlay]; 
      [vc.moviePlayer play]; 

Видео является рабочим файлом. Он также поддерживает обе ориентации. но когда я переключаюсь на другую вкладку, тогда при нажатии на нее клавиатура не показывает клавиатуру.

Пожалуйста, помогите. Спасибо заранее.

ответ

1

Я решил проблему. На самом деле, MPMoviePlayerViewController поддерживает обе ориентации и мое приложение поддерживает только портрет. Когда я увольняю MPMoviePlayerViewController, тогда родительский взгляд на него предполагает, что это ландшафтный режим. Итак, он отображает альбомную клавиатуру, а CGPoint ниже экрана. Вот почему я не могу видеть клавиатуру.

У меня есть запись следующего кода в свой CustomNavigationController.

- (BOOL)shouldAutorotate 
{ 
    return [self.visibleViewController shouldAutorotate]; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return [self.visibleViewController supportedInterfaceOrientations]; 
} 

Теперь он отлично работает.

1

YOu нужно отпустить MoviePlayer ..

Используйте это уведомление, что вызывает, когда ваше видео через

[[NSNotificationCenter defaultCenter] addObserver:self 
               selector:@selector(myMovieFinishedCallback:) 
                name:MPMoviePlayerPlaybackDidFinishNotification 
                object:self.theMoviePlayer]; 

и написать метод его.

-(void)myMovieFinishedCallback:(NSNotification*)aNotification 
{ 
    [self dismissMoviePlayerViewControllerAnimated]; 
    MPMoviePlayerController* theMovie = [aNotification object]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie]; 
} 
0

Вы можете попробовать этот метод делегата,

  • (BOOL) searchBarShouldBeginEditing: (UISearchBar *) SearchBar {

    [MyTextField becomeFirstResponder];

    возвращение ДА;

}

Если это не сработает, попробуйте выяснить, что называется отпустив вид, а затем вставьте следующий код ... Это, безусловно, работает.

[myTextField становитсяFirstResponder];

Смежные вопросы