Уволить MPMoviePlayerController на сенсорном экране - PullRequest
1 голос
/ 10 мая 2011


Я следовал этому уроку и включил видеоплеер в свое приложение.
Но проблема в том, что я хочу скрыть элементы управления и иметь возможность отклонить видео на сенсорном экране.
Я попытался поместить большую прозрачную кнопку перед видео, которая запускает функцию dismiss, но безуспешно. видео всегда будет над кнопкой, и функция никогда не будет вызываться.
Есть ли другой способ сделать это?
ти

Ответы [ 5 ]

1 голос
/ 11 мая 2011

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];
}
1 голос
/ 10 мая 2011

** Привет, я думаю, что AVPlayer стал более подходящим для вас, вы можете использовать его, как показано ниже, а затем добавить подпредставление, если вы хотите играть и если вы хотите прекратить удаление его из супер просмотра

** #import "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];

** Вы должны сделать 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 голосов
/ 11 мая 2011

Я только что нашел решение моей проблемы в другом вопросе, заданном здесь.
после некоторых незначительных модификаций код работал как положено.спасибо всем.

0 голосов
/ 10 мая 2011

Используйте этот код.

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


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

в виду didload;

А в

- (void) stopPlayer

остановите плеер и освободите его от просмотра.

Надеюсь, это поможет вам.

0 голосов
/ 10 мая 2011

Вы должны использовать класс UIGestureRecognizer. См. руководство для деталей. Или прочитайте этот урок .

...