0

ドキュメント (画面) が Apple tvOS アプリのスタックからいつポップされるかを知る必要があります。メニュー ボタンの押下を検出するのが最も簡単な方法だと思いましたが、TVJS を使用していて、イベント ハンドラーの書き方がわかりませんでした。

ドキュメントの削除、メニュー ボタンの押下、または代替ソリューションを提供するときに起動するイベント ハンドラーを作成するのを手伝ってください。

4

2 に答える 2

0

などのハンドラのようなものがありonDocumentRemovalます。select代わりに、グローバルハンドラを作成することができます。

doc.addEventListener("select", self.doThing.bind(self));

そして、起動されたイベントが、スタックの要素を削除するために使用されるボタンの 1 つから発生したかどうかを確認します (これらのボタンに次の名前のクラスがあるとしますdelete

doThing: function(event){
    var element = event.target;
    if (element.getAttribute("class").contains("delete")){
       //enter code here
    }

編集1:

TVMLKit が処理する可能性のあるイベントを見つけました(Swift/Objective-C にあることは知っていますが、イベントは同じです)。

TVElementTypePlay

  • play イベントがディスパッチされました。

TVElementTypeSelect

  • select イベントがディスパッチされました。

TVElementTypeHoldSelect

  • 保留イベントがディスパッチされました。

TVElementTypeHighlight

  • ハイライトイベントが配信されました。

TVElementTypeChange

  • 変更イベントがディスパッチされました。

これらのイベントは、私がテストできる限り、テンプレートにのみ添付できます。changeにアタッチして変更をリッスンできれば、イベントは完璧だと思いnavigationDocumentましたが、これら 2 つのオプションは機能せず、両方ともエラーが発生します。

グローバルに接続:

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 に答える