当h5里面有video 标签的时候,监听video播放进入全屏,和退出全屏通知
1、添加监听UIWindowDidResignKeyNotification
、UIWindowDidBecomeHiddenNotification
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(videoBeginFullScreen)
name:UIWindowDidResignKeyNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(videoStopFullScreen)
name:UIWindowDidBecomeHiddenNotification
object:nil];
2、 实现监听事件
- (void)videoBeginFullScreen {
//自定义实现
}
- (void)videoStopFullScreen {
//自定义实现
}
3、移除监听事件,这个根据需要在合适的地方移除
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIWindowDidResignKeyNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIWindowDidBecomeHiddenNotification object:nil];
4、注意的地方
添加通知的时候,如果是监听video进入全屏,同时也存在输入框的情况下,就不能使用下面的这个通知的监听 UIWindowDidBecomeVisibleNotification
,因为无论是键盘弹起还是video进入全屏,都会触发该方法,如果不注意的话,可能会导致某些逻辑错误。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(videoBeginFullScreen)
name:UIWindowDidBecomeVisibleNotification
object:nil];
5 、关于
UIKIT_EXTERN NSString *const UIWindowDidBecomeVisibleNotification; // 当window激活时并展示在界面的时候触发,返回空
UIKIT_EXTERN NSString *const UIWindowDidBecomeHiddenNotification; // 当window隐藏的时候触发,暂时没有实际测,返回空
UIKIT_EXTERN NSString *const UIWindowDidBecomeKeyNotification; // 当window被设置为keyWindow时触发,返回空
UIKIT_EXTERN NSString *const UIWindowDidResignKeyNotification; // 当window的key位置被取代时触发,返回空
6、参考文档
https://developer.apple.com/documentation/uikit/uiwindowdidresignkeynotification?language=objc