2017-10-22 3 views
1

Ich weiß, möglicherweise ist das eine doppelte Frage, aber die Frage, die bereits existiert, hatte keine Lösung, also frage ich wieder, ob ich möglicherweise Bounty Frage starten soll.Benutzerdefinierte Schaltfläche funktioniert nicht in AVPlayer iOS 11, funktioniert aber einwandfrei unter iOS 11?

Hier ist mein Code, die unter iOS arbeitet 11:

AVPlayer *player = [AVPlayer playerWithURL:videoURL]; 

// create a player view controller 
avcontroller = [[AVPlayerViewController alloc]init]; 
avcontroller.player = player; 
[player play]; 


NSNotificationCenter *noteCenter = [NSNotificationCenter defaultCenter]; 
[noteCenter addObserverForName:AVPlayerItemDidPlayToEndTimeNotification 
         object:nil 
         queue:nil 
        usingBlock:^(NSNotification *note) { 

         NSLog(@"Video end"); 
         self.avcontroller.player = nil; 
         [self.avcontroller.view removeFromSuperview]; 
         [self.view addSubview:delegate.tabViewControllerObj.tabBarController.view]; 
        }]; 

_skip =[UIButton buttonWithType:UIButtonTypeCustom]; 
[_skip addTarget:self action:@selector(btnSkipTapped) 
forControlEvents:UIControlEventTouchUpInside]; 
[_skip setTitle:@"Skip" forState:UIControlStateNormal]; 
_skip.layer.borderWidth = 2.0f; 
_skip.layer.cornerRadius = 12; 
_skip.clipsToBounds = YES; 
_skip.layer.borderColor = [UIColor whiteColor].CGColor; 

// show the view controller 
[self addChildViewController:avcontroller]; 
[avcontroller.view addSubview:_skip]; 
[avcontroller.view bringSubviewToFront:_skip]; 
[self.view addSubview:avcontroller.view]; 
avcontroller.view.frame = self.view.frame; 

} 

-(void)viewDidLayoutSubviews{ 
    [super viewDidLayoutSubviews]; 

_skip.frame = CGRectMake((self.view.frame.size.width-140),(self.view.frame.size.height-150),100.0,35.0); 
} 

Und hier ist Taste angezapft Funktion:

- (IBAction)btnSkipTapped{ 

NSLog(@"Skip button clicked"); 
self.avcontroller.player = nil; 
[self.avcontroller.view removeFromSuperview]; 
[self.view addSubview:delegate.tabViewControllerObj.tabBarController.view]; 
} 

Dieser Code Taste perfekt angezeigt werden, sondern auf Taste tippen, es didn‘ t rufen Sie die Funktion btnSkipTapped auf. Jede Hilfe wäre willkommen!

Antwort

3

@DeepShah Sie haben Skip-Taste in avcontroller.view so seine Anzeige richtig hinzugefügt, aber Sie können nicht darauf klicken, weil AVPlayerViewControllerContentView deckt, die Schaltfläche überspringen.

siehe unten Bild:

image

so müssen Sie Auswahltaste in self.view und seine Werke hinzufügen.

[self.view addSubview:_skip]; 
[self.view bringSubviewToFront:_skip]; 
+0

Danke für die Lösung. Es hat perfekt funktioniert. –

+0

Ich habe das gleiche Problem.In meinem Fall präsentiere ich den AVPlayerViewController und füge eine benutzerdefinierte Schaltfläche hinzu.Eine Schaltfläche wird auf dem AVPlayerViewController angezeigt, kann aber keine Schaltflächenaktion auslösen. Ich habe versucht, das zu tun, was Sie oben erwähnt haben, aber nicht funktioniert.Dieses Problem ist nur in iOS 11. let aufgetreten btn = UIButton? (Typ: .custom) als UIButton self.playerViewController.view .addSubview (BTN) self.playerViewController.view .bringSubview (toFront: self.castWrapperView) Selbst .present (self.playerViewController, animiert: falsch, Fertigstellung: null) @Nirav eine Idee zu diesem Thema? – PramukaD

+0

in 'self.view' oder' self.playerViewController.view' hinzugefügt? –

Verwandte Themen