Как скрыть экран AVPlayer в объективе c? - PullRequest
0 голосов
/ 29 мая 2018
- (void)viewDidLoad
{
    [super viewDidLoad];
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button addTarget:self
               action:@selector(playMethod)
     forControlEvents:UIControlEventTouchUpInside];
    [button setTitle:@"Play" forState:UIControlStateNormal];
    [button setTitleColor:[UIColor purpleColor] 
    forState:UIControlStateNormal];
    button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
    [self.view addSubview:button];
}

- (void)playMethod {
    controller = [[AVPlayerViewController alloc] init];
    [self addChildViewController:controller];
    [self.view addSubview:controller.view];

    controller.view.frame = CGRectMake(15,50,345,300);
    controller.player = player;
    controller.showsPlaybackControls = YES;
    player.closedCaptionDisplayEnabled = NO;

    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
    [button1 addTarget:self
                action:@selector(backMethod)
      forControlEvents:UIControlEventTouchUpInside];
    [button1 setTitle:@"Back" forState:UIControlStateNormal];
    button1.frame = CGRectMake(50.0, 0.0, 160.0, 40.0); // set your own position
    [controller.view addSubview:button1];
    [player pause];
    [player play];


}

-(void)backMethod
{
    controller.view.hidden=YES;
    [player pause];
}

Я пытаюсь воспроизвести RTMP URL в AVPlayer, и он работает нормально, но проблема в том, что я создал кнопку «Назад» на самом плеере, но когда я вызываю его метод (backMethod), ничего не происходит.Я хочу, когда я нажимаю кнопку «Назад», она должна скрывать этот экран (экран плеера), и должен отображаться экран кнопки воспроизведения.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Вы добавили button1 к AVPlayerViewController.View

Здесь:

[controller.view addSubview:button1];

Таким образом, ваша кнопка не получит никаких сенсорных событий Просто попробуйте добавить в свойself.view и убрать кнопку назад, когда скрыть ее

Как это:

- (void)playMethod {
    controller = [[AVPlayerViewController alloc] init];
    [self addChildViewController:controller];
    [self.view addSubview:controller.view];

    controller.view.frame = CGRectMake(15,50,345,300);
    controller.player = player;
    controller.showsPlaybackControls = YES;
    player.closedCaptionDisplayEnabled = NO;

    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
    [button1 addTarget:self
                action:@selector(backMethod)
      forControlEvents:UIControlEventTouchUpInside];
    [button1 setTitle:@"Back" forState:UIControlStateNormal];
    [button1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    button1.frame = CGRectMake(50.0, CGRectGetMinY(self.controller.view.frame)+10, 160.0, 40.0); // set your own position
    // give button tag to remove and add to self.view

    button1.tag = 1001;
    [self.view addSubview:button1];
    [controller.view  bringSubviewToFront:button1];

    [player pause];
    [player play];


}
-(void)backMethod
{
    controller.view.hidden=YES;
    [player pause];
     // remove back button when hide
    [[self.view viewWithTag:1001] removeFromSuperview];
}
0 голосов
/ 29 мая 2018

Попытайтесь поместить ваше представление игрока в подпредставление представления вашего viewController.

И скрыть свое подпредставление, а не скрывать представление PlayerViewController, поскольку оно управляется самим PlayerViewController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...