我正在使用一个应用程序,当点击视频文件时需要打开“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];
视频是工作文件。它也支持两种方向。但是当我切换到另一个标签时,单击它时没有文本字段显示键盘。
请帮忙。谢谢你的到来。
答案 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];