ドキュメント (画面) が Apple tvOS アプリのスタックからいつポップされるかを知る必要があります。メニュー ボタンの押下を検出するのが最も簡単な方法だと思いましたが、TVJS を使用していて、イベント ハンドラーの書き方がわかりませんでした。
ドキュメントの削除、メニュー ボタンの押下、または代替ソリューションを提供するときに起動するイベント ハンドラーを作成するのを手伝ってください。
などのハンドラのようなものがあり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
探しているものを実現するには、アプリを再設計する必要があると思います。