2011-05-10 4 views
1


나는이 tutorial을 추적하고 내 앱에 비디오 플레이어를 포함 시켰습니다.
하지만 문제는 컨트롤을 숨기고 화면 터치로 비디오를 닫을 수 있다는 것입니다.
해제 기능을 트리거하는 비디오 앞에 큰 투명 버튼을 넣으려고했지만 행운이 없었습니다. 비디오는 항상 버튼 위에있을 것이고 기능은 절대로 호출되지 않을 것입니다.
다른 방법이 있습니까?
ty화면상의 터치에서 MPMoviePlayerController를 닫습니다.

답변

0

방금 ​​질문 한 또 다른 질문에서 solution을 발견했습니다. 일부 작은 수정 후
코드가 예상대로 작동했습니다. 다들 감사 해요.

0

UIGestureRecognizer 클래스를 사용해야합니다. 자세한 내용은 manual을 참조하십시오. 또는 this tutorial을 읽으십시오.

0

이 코드를 사용하십시오.

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

1

는 ** 안녕하세요 저는

** # 재생하려는 경우 아래와 같이 사용하고있는 하위 뷰를 추가 할 수 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

+0

did not는 일한다. .. 누군가 나를 도와 줄 수있다. 나는 코드 블라인드가되었다 ... – astazed

+0

friend .. 위 코드에서 하나의 uiview를 만들고 그 이름 플레이어에게 두 번째 코드를 보여 주어야한다. 그 후 거기에 당신의 vedio를 표시하고자하는 주요보기에서, 그것은 첫 번째 코드 위에 올려 놓은로드가 vedio를 플레이하고 vedio를 멈추기 위해 superview에서 제거하기 위해 [self.view addsubview playerview] 위에 놓인 것입니다. – sinh99

1

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

+0

MainView의 xib에서 uiview (playerview)를 가져 가지 않았다고 생각합니다. – sinh99

관련 문제