iPad MPMoviePlayerController - отключить полноэкранный режим - PullRequest
14 голосов
/ 06 сентября 2010

Есть ли способ отключить полноэкранную кнопку MPMoviePlayerController?

Ответы [ 16 ]

11 голосов
/ 18 февраля 2011

Просто сделал это:

- (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];
}
7 голосов
/ 01 декабря 2010

В зависимости от ваших потребностей, вы также можете просто отключить все пользовательские взаимодействия в представлении игрока.

player.view.userInteractionEnabled = NO;
6 голосов
/ 30 августа 2013

Вы можете установить controlStyle в полноэкранный режим.эти элементы управления несколько отличаются, но на них нет полноэкранной кнопки!

[_moviePlayerController setControlStyle:MPMovieControlStyleFullscreen];
5 голосов
/ 15 декабря 2014

К сожалению, ничего из вышеперечисленного не сработало для меня должным образом, поэтому, выбрав выше, я реализовал следующее (и работало нормально):

  1. Скрыть кнопку полноэкранного режима.

Добавьте этот код в метод инициализации проигрывателя фильмов.


    ....

        //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!!!
    }

5 голосов
/ 01 ноября 2010

Вы можете скрыть элементы управления воспроизведением и добавить свои собственные, это предотвратит отображение кнопок по умолчанию вообще

То есть с

[player setMovieControlMode:MPMovieControlModeNone];
4 голосов
/ 20 декабря 2010

Есть чит:

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 и развернуть свои собственные элементы управления транспортом, что является дополнительной работой.

3 голосов
/ 04 августа 2011

чтобы отключить переключение в полноэкранный режим, либо кнопку формы, либо жест жеста, вы можете использовать это:

3 голосов
/ 28 сентября 2010

Нет, нет пути.Надеюсь, со следующим обновлением.

2 голосов
/ 27 сентября 2013

Это работало на 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", а также запускаю его анимацию.Я думаю, что это работает, поскольку дает системе время для реакции.Когда я использовал «WILL» и «DID», как отмечалось в ответах выше, это приводило к черному экрану без элементов управления.При переходе виден небольшой глюк, но мне нужны встроенные кнопки воспроизведения / очистки.

2 голосов
/ 11 июля 2013

Простой блок для удаления щепотки зума здесь

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

это работает со мной на iOS6

 for (UIView *view in  moviePlayer.view.subviews) {

    for(UIPinchGestureRecognizer *pinch in view.gestureRecognizers){
    if([pinch isKindOfClass:[UIPinchGestureRecognizer class]])
        [view removeGestureRecognizer:pinch];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...