- (UIView*)getContainerView
{
UIView *playerControls = (self.videoPlayer.view ? self.videoPlayer.view : self.view);
NSString* containerViewName = [self getContainerViewName]; **//@"MPSwipableView" gets returned**
for(UIWindow* tempWindow in [[UIApplication sharedApplication]windows]){
for(UIView* tempView in [tempWindow subviews]){
if ([[tempView description] rangeOfString:containerViewName].location != NSNotFound){
playerControls = tempView;
break;
}
}
}
if(playerControls == nil){
NSLog(@"player ERROR : movieDidEnterFullScreen , no view named %@ was found",containerViewName);
}
return playerControls;
}
- (void)addCustomControls
{
//...//
UIView *controlsPlaceholder = [self getContainerView];
if (controlsPlaceholder) {
if (![controlsPlaceholder.subviews containsObject:self.customControls.view]) {
[controlsPlaceholder addSubview:self.customControls.view];
}else{
[controlsPlaceholder bringSubviewToFront:self.customControls.view];
}
}
//...//
if (self.tapGestureRecognizer == nil) {
self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
self.tapGestureRecognizer.delegate = self;
}
if ([Device] is_iPad]) {
[self.customControls.view addGestureRecognizer:self.tapGestureRecognizer];
}
else {
[self.videoPlayer.view addGestureRecognizer:self.tapGestureRecognizer];
}
}
===================
我的问题仅在播放器处于全屏模式时与iOS8有关。 handleTapGesture:不会被调用,当我进入全屏模式时,自定义控件视图也会消失。
有任何想法吗?
提前致谢!
最佳答案
“ getContainerViewName”方法具有以下更改:
- (NSString*)getContainerViewName
{
if ([[PSDeviceInfo sharedInstance] is_iOS5]) {
return @"UILayoutContainerView";
}
if ([[PSDeviceInfo sharedInstance] is_iOS6]) {
return @"MPSwipableView";
}
if ([[PSDeviceInfo sharedInstance] is_iOS7]) {
return @"MPSwipableView";
}
if ([[PSDeviceInfo sharedInstance] is_iOS8]) {
return@"MPSwipableView";
}
NSLog(@"player ERROR : getContainerViewName");
return nil;
}
- (NSString*)getContainerViewName
{
if ([[PSDeviceInfo sharedInstance] is_iOS5]) {
return @"UILayoutContainerView";
}
if ([[PSDeviceInfo sharedInstance] is_iOS6]) {
return @"MPSwipableView";
}
if ([[PSDeviceInfo sharedInstance] is_iOS7]) {
return @"MPSwipableView";
}
if ([[PSDeviceInfo sharedInstance] is_iOS8]) {
if (self.playerIsInfullScreen) {
return @"UIInputSetContainerView";
}else {
return@"MPSwipableView";
}
}
NSLog(@"player ERROR : getContainerViewName");
return nil;
}
自定义控件视图将响应触摸并且也将可见。希望这会帮助有需要的人。