从presentMoviePlayerViewControllerAnimated中解除后,UITextfield不会显示键盘

时间:2013-08-02 14:20:19

标签: ios ios6

我正在使用一个应用程序,当点击视频文件时需要打开“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];

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

请帮忙。谢谢你的到来。

3 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:1)

我已经解决了这个问题。 实际上,MPMoviePlayerViewController支持两种方向,我的应用程序仅支持肖像。当我解雇MPMoviePlayerViewController时,它的父视图认为它是横向模式。 因此,它显示横向键盘,其CGPoint低于屏幕。这就是我无法看到键盘的原因。

我已经在我的CustomNavigationController中编写了以下代码。

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

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

现在,它工作正常。

答案 2 :(得分:0)

您可以尝试此委托方法,

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

    [myTextField becomeFirstResponder];

    返回YES;

}

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

[myTextField becomeFirstResponder];