关闭屏幕触摸屏幕上的MPMoviePlayerController

问题描述:


我跟着这个tutorial,并在我的应用程序中包含了一个视频播放器。
但问题是,我想隐藏控件,并能够关闭屏幕上的视频。
我试着在触发解雇功能的视频前放一个大的透明按钮,但没有运气。视频将始终在按钮上,并且该功能永远不会被调用。
还有另一种方法吗?
ty关闭屏幕触摸屏幕上的MPMoviePlayerController

我刚刚发现solution我的问题在这里问另一个问题。
经过一些小的修改后,代码按预期工作。谢谢你们。

您应该使用UIGestureRecognizer类。详情请参阅manual。或者阅读this tutorial

使用此代码。

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(stopPlayer)]; 


[self.view addGestureRecognizer:gestureRecognizer]; 
gestureRecognizer.cancelsTouchesInView = NO; 
[gestureRecognizer release]; 

in view didload;

而且在

- (void) stopPlayer 

停止播放器,并从视图中释放这个球员。

希望它可以帮助你。

+0

在模拟器中完成这项工作吗?我试过没有结果。 – astazed 2011-05-10 08:37:39

**您好我想AVPlayer是更加适合你,你可以如下使用它,然后添加子视图,如果你要玩,如果你想停止从超视图中移除

**#进口 “AVFoundation/AVFoundation.h”

**为了创建球员名单:

NSString *path1 = [[NSBundle mainBundle] pathForResource:@"hello" ofType:@"mp4"]; 
AVPlayerItem *first = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:path1]]; 
player= [AVPlayer playerWithPlayerItem:first]; 
[self.playerView setPlayer:player]; 
[player play]; 

**你必须要为playerview的UIView它:

(id)initWithFrame:(CGRect)frame {self = [super initWithFrame:frame]; 
if (self) { 
    // Initialization code. 
} 
return self; 
} 
+ (Class)layerClass { 
return [AVPlayerLayer class]; 
} 

-(AVPlayer*)player { 
return [(AVPlayerLayer *)[self layer] player]; 
} 

-(void)setPlayer:(AVPlayer *)player { 
[(AVPlayerLayer *)[self layer] setPlayer:player]; 
} 
+0

让我试试看...... – astazed 2011-05-10 10:08:09

+0

没有工作......任何人都可以帮助我。我已经成为代码盲...... – astazed 2011-05-10 10:43:32

+0

friend..in上面的代码中,你必须创建一个uiview,并给它的名字播放器视图,并在其中放置第二个代码。之后,在你的主视图中,你想在那里显示你的视频,在它的负载放在第一代码然后[self.view addsubview playerview]播放视频,并从超级视图中删除它停止你的视频。 – sinh99 2011-05-10 10:57:16

PlayerViewControll .H

#import <UIKit/UIKit.h> 
#import <AVFoundation/AVFoundation.h> 
@interface PlayerView : UIView UILabel *pageNumberLabel; 
int pageNumber; 
} 
@property (nonatomic, retain) AVPlayer *player; 
- (id)initWithPageNumber:(int)page; 

PlayerView .M

#import "PlayerView.h" 


@implementation PlayerView 
- (id)initWithFrame:(CGRect)frame { 
self = [super initWithFrame:frame]; 
if (self) {} 
return self; 
} 
+ (Class)layerClass { 
return [AVPlayerLayer class]; 
} 
- (AVPlayer*)player { 
return [(AVPlayerLayer *)[self layer] player]; 
} 
- (void)setPlayer:(AVPlayer *)player { 
[(AVPlayerLayer *)[self layer] setPlayer:player]; 
} 

MainViewControll .H

#import <AVFoundation/AVFoundation.h> 
#import "PlayerView.h" 
@interface MainViewController : UIViewController { 
IBOutlet PlayerView *playerView; 
NSString *url; 
AVPlayer *player; 
NSMutableArray *arrIteam; 
} 
@property(nonatomic,retain) NSMutableArray *arrIteam; 
@property (nonatomic, retain) AVPlayer *player; 
@property(nonatomic ,retain)IBOutlet PlayerView *playerView; 

PlayerView.M

#import "MainViewController.h" 
#import <QuartzCore/QuartzCore.h> 
@implementation MainViewController 
@synthesize player,playerView,arrIteam; 
- (void)viewDidLoad { 
NSString *path1 = [[NSBundle mainBundle] pathForResource:@"hello" ofType:@"mp4"]; 
AVPlayerItem *first = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:path1]]; 
arrIteam = [[NSMutableArray alloc] initWithObjects:first,second, third,fourth,nil]; 
player=[AVPlayer playerWithPlayerItem:[arrIteam objectAtIndex:i]]; 
[self.playerView setPlayer:player]; 
[player play]; 
[super viewDidLoad]; 
} 
+0

谢谢!这大概是我正在写的东西,而且我仍然有同样的错误!必须有我丢失的东西.... – astazed 2011-05-11 10:26:54

+0

我认为你没有在MainView的xib中使用uiview(playerview),它可能会发生。 – sinh99 2011-05-11 10:30:16