0

我不确定我是否理解'MoviePlayerController'的子类是什么意思。 a)这是在创建新的视图控制器并在其中添加MPMoviePlayerController实例吗? b)其他的东西?一些代码示例会非常有帮助。如何继承MPMoviePlayer控制器

感谢

回答

3

这不能作为上面的评论,因为它占用了太多的字符。

好吧@ 1110我要假设你想要一个UITapGestureRecognizer添加到播放器视图,不要忘记已经支持手势捏全屏/删除全屏显示。 下面的代码假设您正在使用MPMoviePlayerController作为iVar的视图控制器。

您可能不想检测到一次敲击,因为它已经使用敲击检测计数为1来显示/隐藏玩家控制器。

下面是一个代码示例为你做了个手势识别为双击

代码PlayerViewController.h

#import <UIKit/UIKit.h> 
#import <MediaPlayer/MediaPlayer.h> 

@interface PlayerViewController : UIViewController {} 

//iVar 
@property (nonatomic, retain) MPMoviePlayerController *player; 

// methods 
- (void)didDetectDoubleTap:(UITapGestureRecognizer *)tap; 
@end 

代码PlayerViewController.m

#import "PlayerViewController.h" 

@implementation PlayerViewController 
@synthesize player; 

- (void)dealloc 
{ 
    [player release]; 
    [super dealloc]; 
} 

- (void)viewDidLoad 
{ 

    // initialize an instance of MPMoviePlayerController and set it to the iVar 
    MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://path/to/video.whatever"]]; 
    // the frame is the size of the video on the view 
    mp.view.frame = CGRectMake(0.0, 0.0, self.view.bounds.size.width, self.view.bounds.size.height/2); 
    self.player = mp; 
    [mp release]; 
    [self.view addSubview:self.player.view]; 
    [self.player prepareToPlay]; 

    // add tap gesture recognizer to the player.view property 
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didDetectDoubleTap:)]; 
    tapGesture.numberOfTapsRequired = 2; 
    [self.player.view addGestureRecognizer:tapGesture]; 
    [tapGesture release]; 

    // tell the movie to play 
    [self.player play]; 

    [super viewDidLoad]; 
} 

- (void)didDetectDoubleTap:(UITapGestureRecognizer *)tap { 
    // do whatever you want to do here 
    NSLog(@"double tap detected"); 
} 

@end 

仅供参考,我已经检查了这个代码,它的工作原理。

+0

谢谢我做了类似的东西,但它的工作:)'与视图控制器与MPMoviePlayerController作为一个iVar',这是我的问题的真正答案,因为我不明白什么时候有人说'subclass mpmovieplayer'它的真正含义,继承或查看与iVar。谢谢。 – 1110

2

如果你不知道什么子类的手段,你应该研究的题目是“继承”。应该有很多材料覆盖iOS的主题,特别是当您在Xcode中创建任何文件时,很可能您已经对一个类进行了子类化。大多数情况下,您在创建视图时将继承NSObject或UIViewController等。

您可能不希望将MPMoviePlayerController子类化,因为它是一个非常适合流式传输的高级类。 MPMoviePlayerViewController像普通的视图控制器一样工作,只是它已经带有一个MPMoviePlayerController作为iVar。

凝结以下声明:

@interface MPMoviePlayerViewController : UIViewController {} 
@property(nonatomic, readonly) MPMoviePlayerController *moviePlayer; 
@end 

你可以在苹果的文档中心这里的一些示例代码:

https://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/MultimediaPG/UsingVideo/UsingVideo.html#//apple_ref/doc/uid/TP40009767-CH3-SW1

电影播放Xcode项目,你会发现这里:

https://developer.apple.com/library/ios/#samplecode/MoviePlayer_iPhone/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007798

从iOS设备播放电影非常简单,请确保您阅读了Apple的文档。检出这些类的头文件也会让你更深入地了解你正在处理的内容。

希望有所帮助。

+0

我试图使用MPMoviePlayerViewController和一切工作正常,除了我需要检测点击和双击与自定义方法处理程序的球员。所以基本上,如果我使用“MPMoviePlayerController”实例在其子类中创建UIViewController类,对吧? – 1110

+0

+ +1努力解决一个相当愚蠢的问题。 – Till

+0

@till谢谢:) – anthonyherron