0

我正在使用一个需要在单击视频文件时打开“MPMoviePlayerViewController”的应用程序。

我们的应用程序中有一个 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];

视频是工作文件。它还支持两个方向。但是当我切换到另一个选项卡时,单击它时没有文本字段显示键盘。

请帮忙。谢谢是提前。

4

3 回答 3

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];
}
于 2013-08-02T14:25:31.863 回答
1

我已经解决了这个问题。实际上,MPMoviePlayerViewController 支持两个方向,而我的应用只支持纵向。当我关闭 MPMoviePlayerViewController 时,它的父视图认为它是横向模式。因此,它显示横向键盘,其 CGPoint 低于屏幕。这就是为什么我看不到键盘的原因。

我已将以下代码写入我的 CustomNavigationController。

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

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

现在,它工作正常。

于 2013-08-02T14:38:54.343 回答
0

你可以试试这个委托方法,

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

    [myTextField 成为FirstResponder];

    返回是;

}

如果这不起作用,请尝试在关闭视图后找出调用的内容,然后插入以下代码......这肯定会起作用。

[myTextField 成为FirstResponder];

于 2013-08-02T15:09:04.993 回答