【问题标题】:How to detect menu button press in TVOS app using TVJS如何使用 TVJS 在 TVOS 应用程序中检测菜单按钮按下
【发布时间】:2016-03-23 06:09:15
【问题描述】:

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

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

【问题讨论】:

  • 您使用的是menuBarTemplate吗?如果是这样,您想将事件附加到的menuItem 看起来如何?发布一些代码,以便我们更好地帮助您:)

标签: tvos apple-tv tvjs


【解决方案1】:

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)});

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

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

【讨论】:

  • 我明白这一点。问题是当用户按下 Apple 遥控器上的“菜单”按钮时,它会从堆栈中删除一个文档。我怎么知道该按钮何时被按下?我真的只需要知道文档何时从堆栈中删除。有我可以听的活动吗?
  • @Corgalore 用一些坏消息更新了帖子
【解决方案2】:

订阅事件unload - 当页面从堆栈中弹出后消失时触发:

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

[...]

onUnload: function(event) {
   console.log("onUnload");
},

【讨论】:

  • 它也适用于根模板吗?你在哪里找到所有支持的事件(官方文档很糟糕)?
  • 根模板?离开您的应用程序时,就像最后一个关闭一样?老实说,我不知道...但是为此,您可以在主 App.js 中使用 App.onSuspend 事件。不确定我是否知道“所有”支持的事件——我主要从互联网上传播的不同示例中获取它们。加上一些早期处理旧 aTV 的经验(说 PlexConnect)。
  • onSuspend 事件听起来很正确。谢谢。关于其他问题的任何内容,是否有更完整的文档?
  • 不,抱歉,没有更完整的文档。在我之前的评论中已经添加了一些评论。 :-D
  • 嗯,听起来很有希望,我会检查导航文档上的卸载事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 2013-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
相关资源
最近更新 更多