Есть ли способ отключить полноэкранную кнопку MPMoviePlayerController?iPad MPMoviePlayerController - отключить полноэкранный режим
ответ
Нет, нет способа. Надеюсь, следующее обновление.
Вы можете скрыть элементы управления воспроизведением и добавлять свои собственные, то для этого будет предотвратить кнопки по умолчанию, оказываемые на всех
Ie с
[player setMovieControlMode:MPMovieControlModeNone];
В зависимости от ваших потребностей, вы можете просто отключить все пользовательские взаимодействия в режиме просмотра плеера.
player.view.userInteractionEnabled = NO;
Проводной. Для видеороликов, которые начинаются в полноэкранном режиме, у них есть стандартные элементы управления MPMoviePlayerController, но отсутствуют полноэкранные кнопки. И они используют стандартные встроенные, так как у них внезапно появилась кнопка AirPlay с 4.2.
Там же обманщик:
MPMoviePlayerController *mpc = (...some instance...)
UIView *fsbutton = [[mpc view] viewWithTag:512];
[fsbutton setHidden:YES];
Основной улов, вы должны сделать это в viewDidAppear:
или подобное, потому что вид MoviePlayer ставит себя где-то внутри didMoveToWindow
или didMoveToSuperview
, которые происходят после viewWillAppear:
. Таким образом, вы получаете кратковременную вспышку полноэкранной кнопки. Другие очевидные уловы включают в себя: хрупкий против Apple, изменяющий значение тега 512 (хотя он работает в 3.2 - 4.2); и, конечно, Apple предпочел бы, чтобы вы этого не делали.
Подтвержденное решение заключается в том, чтобы установить стиль управления на MPMovieControlStyleNone
и свернуть свои собственные средства управления транспортом, что больше работает.
Другая проблема заключается в том, что прижим для увеличения масштаба, который также приводит пользователя в полный экран, обходит эту опрятную идею. – Roger
и попытаться удалить жесты – SAKrisT
Apple, скорее всего, отклонит ваше приложение, если вы попытаетесь изменить MPMovePlayerController за публичным API. Вот цитата из [Документов Apple] (https://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPMoviePlayerController_Class/Reference/Reference.html): «Подумайте, что просмотр фильма считается непрозрачным Структура. Вы можете добавить свои собственные подзаголовки в контент слоя поверх фильма, но вы ** никогда не должны изменять какие-либо из его существующих подзонов. ** « – n8tr
Просто сделал это:
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieEventFullscreenHandler:)
name:MPMoviePlayerWillEnterFullscreenNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieEventFullscreenHandler:)
name:MPMoviePlayerDidEnterFullscreenNotification
object:nil];
self.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
}
- (void)movieEventFullscreenHandler:(NSNotification*)notification {
[self.moviePlayer setFullscreen:NO animated:NO];
[self.moviePlayer setControlStyle:MPMovieControlStyleEmbedded];
}
Приятная идея, я думал, что могу использовать это, чтобы вызвать предупреждение, чтобы объяснить, почему полноэкранный режим не разрешался в текущем контексте и заставлял его оставаться во встроенном режиме. К сожалению, что на самом деле происходит, так это то, что вы все равно получаете переход на полный экран, а затем он возвращается к встроенному, который выглядит очень ужасно. – Roger
Я просто пытался это сделать, но, к сожалению, полноэкранный режим игнорирует MPMovieControlStyleEmbedded и использует FullScreen, который, когда я переключаю полноэкранный режим, тогда он становится еще больше :( – lordB8r
Полноэкранной кнопка вместе с кнопкой паузы может быть удалена.
[self.videoPlayer setControlStyle:MPMovieControlStyleNone];
для того, чтобы отключить переключатель в полноэкранном режиме, либо форма кнопки или защемления жест, вы можете использовать это:
moviePlayer.controlStyle = MPMovieControlStyleNone;
moviePlayer.view.userInteractionEnabled =NO;
Я знаю, это немного устарела, но в любом случае. Я провел некоторое исследование в этом направлении и, похоже, нашел ответ. Я не знаю, почему он работает, но это так.
-(void) playMovieAtURL: (NSURL*) theURL {
MPMoviePlayerController* theMovie =
[[MPMoviePlayerController alloc] initWithContentURL: theURL];
//That line is for ARC. Without it, it may not work.
self.moviePlayer = theMovie;
theMovie.scalingMode = MPMovieScalingModeAspectFill;
theMovie.controlStyle = MPMovieControlStyleFullscreen;
theMovie.repeatMode = MPMovieRepeatModeOne;
//Here you'd better use your custom ViewController subclass, if you want autorotating and all that stuff.
UIViewController * vc = [UIViewController new];
[vc.view addSubview:theMovie.view];
theMovie.fullscreen = YES;
theMovie.view.frame = vc.view.bounds;
vc.view = theMovie.view;
[self presentModalViewController:vc animated:YES];
theMovie.fullscreen = YES;
[theMovie prepareToPlay];
[theMovie play];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
}
// Когда фильм сделан, отпустите контроллер.
-(void) myMovieFinishedCallback: (NSNotification*) aNotification
{
[self dismissModalViewControllerAnimated:YES];
MPMoviePlayerController* theMovie = [aNotification object];
[[NSNotificationCenter defaultCenter]
removeObserver: self
name: MPMoviePlayerPlaybackDidFinishNotification
object: theMovie];
[self.moviePlayer.view removeFromSuperview];
self.moviePlayer = nil;
// Release the movie instance created in playMovieAtURL:
}
Если только вещь, которую вы хотите сделать, это отключить ущипнуть, чтобы перейти на полный экран (т.е.поддерживать взаимодействие включено и независимо от управления стилем, который вы хотите), вы можете использовать это:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSSet *set = [event allTouches];
NSArray *arr = [set allObjects];
for (int i = 0; i < arr.count; i++) {
UITouch *touch = (UITouch *) [arr objectAtIndex:i];
NSArray *recognisers = touch.gestureRecognizers;
for (UIGestureRecognizer *recogniser in recognisers) {
if (recogniser.enabled && [recogniser isMemberOfClass:[UIPinchGestureRecognizer class]]) {
recogniser.enabled = NO;
}
}
}
}
Простого блок для удаления щепотки зума здесь
Надежда это поможет
он работает со мной на iOS6
for (UIView *view in moviePlayer.view.subviews) {
for(UIPinchGestureRecognizer *pinch in view.gestureRecognizers){
if([pinch isKindOfClass:[UIPinchGestureRecognizer class]])
[view removeGestureRecognizer:pinch];
}
}
Вы можете установить controlStyle для полноэкранного режима. эти элементы управления несколько отличаются, но в нем нет полноэкранной кнопки!
[_moviePlayerController setControlStyle:MPMovieControlStyleFullscreen];
Genius! Это, безусловно, лучший ответ. – PICyourBrain
Это работало на iOS 7, iPhone 5s.
Add Notification:
MPMoviePlayerDidEnterFullscreenNotification : @"moviePlayFullscreenNote:"
- (void)moviePlayFullscreenNote:(NSNotification*)notification
{
if (notification.object == self.videoPlayer)
{
[self.videoPlayer setFullscreen:NO animated:YES];
self.videoPlayer.controlStyle = MPMovieControlStyleEmbedded;
}
}
Обратите внимание, что я слушаю только «DID», а не «ВОЛЯ» уведомление, а также работает он анимированный. Я думаю, что это работает, поскольку это дает системному времени реагировать. Когда я использовал «WILL» и «DID», как указано в ответах выше, это привело к черному экрану без контроля. Есть небольшой сбой, который виден при переходе, но мне нужны кнопки воспроизведения/скраба из встроенного.
К сожалению, ни один из выше не работает для меня правильно, поэтому выбор выше я реализовал следующие (и работал отлично):
- Скрыть кнопку полного экрана.
Добавить этот код в том виде, в котором вы инициализируете проигрывателя.
.... //Because we have to wait until controllers are shown [self performSelector:@selector(hideFullscreenButton) withObject:self afterDelay:0.5]; ...
Добавить методы:
-(void) hideFullscreenButton{ //Hide full screen mode button [self hideFullscreenSubview:movieClip.view.subviews]; } -(void) hideFullscreenSubview:(NSArray*)arr{ for(UIView *v in arr){ if([v.subviews count]>0) [self hideFullscreenSubview:v.subviews]; else NSLog(@"%@",v); if(v.frame.origin.x==975){ v.hidden=TRUE; } } }
Проблема полагается, что нет тегов, чтобы определить, какой вид вы должны скрывать. В моем случае я определяю его по координатам вида.
- Перезаписывать жесты для переноса, не позволяя полноэкранный зум.
movieClip.controlStyle = MPMovieControlStyleEmbedded; //Disable tap for not allowing that video control set on a full screen mode. UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doSingleTap)]; singleTap.numberOfTapsRequired = 1; [movieClip.view addGestureRecognizer:singleTap]; UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doDoubleTap)]; doubleTap.numberOfTapsRequired = 2; [movieClip.view addGestureRecognizer:doubleTap]; [singleTap requireGestureRecognizerToFail:doubleTap];
и добавить методы селекторные:
-(void) doSingleTap{ //DO NOTHING!!! } -(void) doDoubleTap{ //DO NOTHING!!! }
Первое решение идеально подойдет для меня, thx! Внизу версия Swift – diegomen
скрывает скруббер не кнопку полного экрана –
Помещенный UIView
или UIButton
с прозрачным фоном на верхней части представления, которая показывает видео, так что пользователь не сможет нажмите на вид, содержащий видео.
Это Swift версия первого решения Хавьер Калатравы Llavería:
func hideFullScreenButton() {
self.hideFullScreenSubview((self.moviePlayerController?.view.subviews)!)
}
func hideFullScreenSubview(subviews: [UIView]) {
for view: UIView in subviews {
if view.subviews.count > 0 {
self.hideFullScreenSubview(view.subviews)
}
if view.frame.origin.x == 631 {
view.hidden = true
}
}
}
И когда пользователь нажимает на Play:
self.performSelector(#selector(VideoViewController.hideFullScreenButton), withObject: self, afterDelay: 0.5)
(VideoViewController является контроллер представления, в котором у меня есть MPMoviePlayerController)
- 1. iPad Полноэкранный режим Разрешить просмотр
- 2. mpmovieplayercontroller полноэкранный вопрос?
- 3. Отключить полноэкранный режим видео HTML5
- 4. Как отключить полноэкранный эксклюзивный режим?
- 5. MPMoviePlayerController Скрывает полноэкранный контроллер
- 6. MPMoviePlayerController, запретить полноэкранный режим, но разрешить навигацию через клип?
- 7. MPMoviePlayerController fullscreen quirk в iPad
- 8. Как добавить салфетки жест на полноэкранный режим MPMoviePlayerController в iOS6
- 9. посмотреть состояние контроллера после mpmovieplayercontroller полноэкранный режим iOS
- 10. Кнопка «Готово» в MPMoviePlayerController не работает, когда полноэкранный режим
- 11. Как отключить пользовательский полноэкранный режим клавиатуры?
- 12. HTML5 video - отключить только полноэкранный режим
- 13. OSX - отключить полноэкранный режим от кнопки масштабирования?
- 14. iPad MPMoviePlayerController iOS 5.1 проблема в UISplitView
- 15. режим масштабирования MPMoviePlayerController не работает в режиме IPad ландшафтного
- 16. Полноэкранный режим для игровых площадок Swift на iPad
- 17. заставляет видео, связанное якорем, играть в полноэкранный режим на iPad
- 18. UISearchController, показывающий полноэкранный режим, а не всплывающее окно на iPad
- 19. Youtube видео, не воспроизводящее полноэкранный режим на iPad
- 20. Jquery полноэкранный режим отклонен
- 21. Полноэкранный режим Cross Browser
- 22. Переключение Galleria Полноэкранный режим
- 23. AS3: полноэкранный режим проблема
- 24. X11/GLX - полноэкранный режим?
- 25. Полноэкранный режим для видео
- 26. IFrame расширяет полноэкранный режим
- 27. Полноэкранный режим с pyqt4?
- 28. Полноэкранный режим от javascript
- 29. Воздушное приложение полноэкранный режим
- 30. WinForm введите полноэкранный режим
:( спасибо !! – MathieuF