0

我需要知道何时在 Apple tvOS 应用程序中从堆栈中弹出文档(屏幕)。我认为检测菜单按钮按下将是最简单的方法,但我正在使用 TVJS 并且无法弄清楚如何编写事件处理程序。

请帮助我编写一个事件处理程序,该处理程序将在文档删除、菜单按钮按下或提供替代解决方案时触发。

4

2 回答 2

1

订阅事件unload- 只要页面从堆栈中弹出后消失,就会触发它:

doc.addEventListener("unload", Presenter.onUnload.bind(Presenter));

[...]

onUnload: function(event) {
   console.log("onUnload");
},
于 2015-12-23T10:01:18.093 回答
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:

我找到了TVMLKit 处理的可能事件(我知道它在 Swift/Objective-C 中,但事件是相同的):

TVElementTypePlay

  • 已调度播放事件。

电视元素类型选择

  • 已调度选择事件。

TVElementTypeHoldSelect

  • 已调度保持事件。

TVElementTypeHighlight

  • 已调度突出显示事件。

TVElementTypeChange

  • 已调度更改事件。

据我所知,这些事件只能附加到模板上。我猜change如果我可以将事件附加到监听更改,那么该事件将是完美的navigationDocument,但这两个选项将不起作用并且都会引发错误:

附全局:

navigationDocument.addEventListener("change", function(event){console.log(event)});

附加到文档数组:

navigationDocument.documents.addEventListener("change", function(event){console.log(event)});

上面没有内置的方法来监听任何变化。但是,该事件将在侦听内部更改的模板上运行。pushed但是当模板进出popped堆栈时它不会触发。

我猜你需要重新设计你的应用程序才能实现你想要的。

于 2015-12-22T08:31:01.823 回答