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

3

我正在尝试覆盖在tvOS上进行焦点更改时播放的声音,但似乎找不到任何指示这是否可能的内容。我已经浏览了一些苹果文档,并查看了一些声音API,但没有一个适合。有人知道这是否可能吗?如果可能,如何实现?


如果您找到解决方案,我会非常感兴趣。到目前为止(tvOS 9.1),我只能想象实现一个自定义焦点引擎来播放您自己的声音。 :-( - bio
我花了相当多的时间研究这个问题,目前似乎只是API不可用。我已经向苹果公司提交了一个错误报告以进行改进,你也应该这样做!如果有足够多的人请求,他们可能会添加它。 - Bryce Meyer
1个回答

1
这可以通过soundIdentifierForFocusUpdate实现,该方法在tvOS 11中添加到SDK中。
使用此方法,您可以自定义或删除在焦点更新时播放的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在以下链接中有详细说明: 使用自定义声音进行焦点移动


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接