2013-08-02 75 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

你需要解僱你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 *)搜索欄{

    [myTextField將becomeFirstResponder];

    return YES;

}

如果這不起作用,嘗試找出解僱後視圖所謂然後插入下面的代碼......這肯定會工作。

[myTextField becomeFirstResponder];

相關問題