TVML / tvOS 检测滚动结束

TVML / tvOS Detect end of scroll

我有 collection 清单和书架。我只能下载 10 个项目。当用户滚动到结束时,我应该提出新的请求。但我不知道如何在 xml 或 js

中检测滚动结束

我有同样的要求ui,但我找不到任何直接的方法来实现这一点,所以我为我的应用程序所做的可以告诉你。

第 1 步: 使用 xml 在 UI 上呈现 10 个项目时,您可以向 ui 元素添加一个属性(对我来说是锁定)在 xml 文件中。

例如:<锁定索引="{{索引}}">

第 2 步: 添加事件列表的文档

doc.addEventListener("highlight",_handleHighlight)

Step-3 : 每次 lockup 获得焦点时,控制都会来到 _handleHighlight 函数。在那里你可以找到 index ,基于它执行分页。

_handleHighlight(event) { 
        var self = this;
        var ele = event.target;
        var index = ele.getAttribute("index")
        // if idndex > (item.count - 3) perform pagination
}

我发现了 Apple 的示例代码并发现了一个有趣的事件。它调用 "needsmore"。

//A DocumentController subclass that handles pagination for multiple shelfs
class ShelfDocumentController extends DocumentController {

setupDocument(document) {
    super.setupDocument(document)

    let shelfs = document.getElementsByTagName("shelf")
    if (!shelfs || shelfs.lenth == 0) { return }

    //enumerate all shelfs in the template
    for (let idx = 0; idx < shelfs.length; ++idx) {
        let shelf = shelfs.item(idx)
        shelf.page = 1

        //using the data url from the shelf's first section (there should only be one section per shelf)
        let sections = shelf.getElementsByTagName("section")
        if (!sections || sections.length == 0) { continue }

        let section = sections.item(0)
        let pageUrl = section.getAttribute("dataURL")

        //add the listener to the shelf
        shelf.addEventListener("needsmore", (event) => {
            //replace this code with your logic for getting new pages
            shelf.page = shelf.page + 1
            if (shelf.page > 10) { return }
            let nextPageUrl = pageUrl.replace("\.json", "_" + shelf.page + ".json")
            this.fetchNextPageAtURL(nextPageUrl, section);
        })
    }
}
}