如何在tvOS中覆盖焦点引擎更新声音

时间:2015-12-10 08:32:51

标签: tvos focus-engine

我试图覆盖在tvOS上进行焦点更改时播放的声音,但我似乎无法找到任何指示是否可行的声音。我已经仔细查看了Apple文档,并查看了一些声音API,但似乎都没有。有人知道这是否可能吗?如果可能的话,如何实现?

1 个答案:

答案 0 :(得分:0)

这可以通过添加到tvOS 11中的SDK

中的soundIdentifierForFocusUpdate来实现

使用此方法,您可以自定义或删除焦点更新时播放的tvOS默认声音。

要删除声音,您可以返回UIFocusSoundIdentifier.none

override func soundIdentifierForFocusUpdate(in context: UIFocusUpdateContext) -> UIFocusSoundIdentifier? {    
    return UIFocusSoundIdentifier.none
}

要使用不同的声音,您必须在目标中加入新的声音文件,然后加载如下所示:

let myPing = UIFocusSoundIdentifier.init(rawValue: "customPing")
let soundURL = Bundle.main.url(forResource: "ping", withExtension: "aif")!
UIFocusSystem.register(_: soundURL, forSoundIdentifier: myPing)

然后你必须从 soundIdentifierForFocusUpdate 返回新声音:

override func soundIdentifierForFocusUpdate(in context: UIFocusUpdateContext) -> UIFocusSoundIdentifier? {    
    return myPing
}

Apple在以下链接中记录了所有内容: Using Custom Sounds for Focus Movement