You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用AVPlayerView响应暂停⏯️键自动暂停视频的功能

解决方案

AVPlayerView 没有公开的配置属性可以直接关闭媒体按键的默认响应,要屏蔽⏯️按键触发自动暂停/播放的行为,子类化AVPlayerView拦截对应按键事件即可,实现步骤如下:

  1. 新建AVPlayerView的自定义子类,重写按键事件处理方法,拦截播放暂停键,不要把事件传给父类触发默认逻辑:
import AppKit
import AVKit

class KeyInterceptedPlayerView: AVPlayerView {
    override func keyDown(with event: NSEvent) {
        // 苹果键盘上⏯️播放/暂停媒体键对应的键码为16
        if event.keyCode == 16 {
            // 这里可以写你自己需要的按键响应逻辑,不需要额外处理直接return即可
            return
        }
        // 如果不需要保留其他按键的默认响应,直接删掉下面这行super调用即可
        super.keyDown(with: event)
    }
    
    // 部署目标为macOS 10.15+时建议加上这个方法,适配新的事件传递机制
    override func pressesBegan(_ presses: Set<NSPress>, with event: NSPressesEvent?) {
        for press in presses {
            if press.key?.keyCode == 16 {
                return
            }
        }
        super.pressesBegan(presses, with: event)
    }
}
  1. 替换原有代码中AVPlayerView的相关声明和初始化逻辑,使用上面自定义的子类:
// 替换原有的AVPlayerView属性声明
private var video_player_view: KeyInterceptedPlayerView

// 替换init方法里的初始化代码
self.video_player_view = KeyInterceptedPlayerView()

补充说明

  • 如果需要同时屏蔽其他媒体按键,可以在判断条件中追加对应键码:上一曲键码19、下一曲键码20
  • 拦截生效的核心是:被屏蔽的按键不要调用父类的事件处理方法,否则AVPlayerView内置的播放控制逻辑还是会触发
  • 你当前代码已经将controlsStyle设置为.none,不会显示原生播放控件,搭配上面的按键拦截后,就不会出现按键触发自动暂停的问题

内容的提问来源于stack exchange,提问作者user10802841

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 22:09:49