我需要知道何时从Apple tvOS应用程序中弹出文档(屏幕)。我认为检测菜单按钮是最简单的方法,但是我使用的是TVJS并且无法弄清楚如何编写事件处理程序。
请帮我写一个事件处理程序,它将触发文档删除,按下菜单按钮或提供替代解决方案。
答案 0 :(得分:1)
订阅活动unload
- 每当页面从堆栈弹出后消失,它就会被触发:
doc.addEventListener("unload", Presenter.onUnload.bind(Presenter));
[...]
onUnload: function(event) {
console.log("onUnload");
},
答案 1 :(得分:0)
onDocumentRemoval
或类似的处理程序有这样的东西。相反,你可以做的是创建一个全局select
处理程序:
doc.addEventListener("select", self.doThing.bind(self));
然后检查触发事件是否来自用于删除堆栈元素的其中一个按钮(假设这些按钮具有名为delete
的类:
doThing: function(event){
var element = event.target;
if (element.getAttribute("class").contains("delete")){
//enter code here
}
编辑1:
我找到possible events the TVMLKit handles(我知道它在Swift / Objective-C中,但事件是相同的):
TVElementTypePlay
- 已发送一个游戏事件。
TVElementTypeSelect
- 已分派了一个选择事件。
TVElementTypeHoldSelect
- 已发送暂停事件。
TVElementTypeHighlight
- 已发送突出显示事件。
TVElementTypeChange
- 已发送更改事件。
只要我可以测试,这些事件只能附加到模板上。我猜测change
事件是完美的,如果我可以将它附加到navigationDocument
来听取更改,但这两个选项不会起作用并且都会引发错误:
附在全球:
navigationDocument.addEventListener("change", function(event){console.log(event)});
附加到文档数组:
navigationDocument.documents.addEventListener("change", function(event){console.log(event)});
上述方法没有内置方法可以监听任何更改。但是,该事件将适用于侦听内部更改的模板。但是当模板从堆栈pushed
到popped
时,它就不会被激活。
我猜您需要重新设计您的应用才能实现您的目标。