diff --git a/keyBoard/Class/Guard/VC/KBGuideVC.m b/keyBoard/Class/Guard/VC/KBGuideVC.m index fd21f98..224072b 100644 --- a/keyBoard/Class/Guard/VC/KBGuideVC.m +++ b/keyBoard/Class/Guard/VC/KBGuideVC.m @@ -135,9 +135,13 @@ typedef NS_ENUM(NSInteger, KBGuideItemType) { [self kb_preparePermissionOverlayIfNeeded]; BOOL show = needGuide; -// [UIView performWithoutAnimation:^{ - self.permVC.view.hidden = !show; -// }]; + // 同步控制引导页视频的播放/暂停:仅在显示时播放 + self.permVC.view.hidden = !show; + if (show) { + [self.permVC kb_resumeGuideVideoIfNeeded]; + } else { + [self.permVC kb_pauseGuideVideo]; + } // 若权限已满足(引导未显示),从设置返回时尝试让输入框成为第一响应者, // 以便立刻触发键盘挂载并检测是否为自家键盘/是否已开启完全访问 diff --git a/keyBoard/VC/KBPermissionViewController.h b/keyBoard/VC/KBPermissionViewController.h index 90bced0..1eebf33 100644 --- a/keyBoard/VC/KBPermissionViewController.h +++ b/keyBoard/VC/KBPermissionViewController.h @@ -16,6 +16,10 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, copy, nullable) void (^backHandler)(void); @property (nonatomic, strong) UIButton *backButton; // 左上角返回 +/// 外部(如 KBGuideVC)根据引导页是否显示,控制视频播放/暂停 +- (void)kb_resumeGuideVideoIfNeeded; +- (void)kb_pauseGuideVideo; + @end NS_ASSUME_NONNULL_END diff --git a/keyBoard/VC/KBPermissionViewController.m b/keyBoard/VC/KBPermissionViewController.m index f920e22..95dc657 100644 --- a/keyBoard/VC/KBPermissionViewController.m +++ b/keyBoard/VC/KBPermissionViewController.m @@ -108,8 +108,10 @@ static void *KBPermPlayerPresentationSizeContext = &KBPermPlayerPresentationSize - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - // 进入页面时自动开始播放 - [self kb_setupPermissionVideoPlayer]; + // 进入页面时自动开始播放;若当前被隐藏,则由外部显式控制 + if (!self.view.hidden) { + [self kb_setupPermissionVideoPlayer]; + } } - (void)viewDidDisappear:(BOOL)animated { @@ -249,6 +251,15 @@ static void *KBPermPlayerPresentationSizeContext = &KBPermPlayerPresentationSize [self.kb_permPlayer play]; } +- (void)kb_resumeGuideVideoIfNeeded { + // 若已初始化,则直接播放;否则按统一逻辑创建并播放 + [self kb_setupPermissionVideoPlayer]; +} + +- (void)kb_pauseGuideVideo { + [self.kb_permPlayer pause]; +} + - (void)kb_playerItemDidReachEnd:(NSNotification *)note { AVPlayerItem *item = (AVPlayerItem *)note.object; if (!item) return;