TVML / tvOS Определить конец прокрутки - PullRequest
0 голосов
/ 04 июня 2018

У меня есть список сбора и полки.Я могу скачать только 10 предметов.Когда пользователь прокручивается до конца, я должен сделать новый запрос.Но я не знаю, как определить конец прокрутки в XML или JS

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Я обнаружил примеры кодов от Apple и нашел одно интересное событие.Это называет «нужно больше».

//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);
        })
    }
}
}
0 голосов
/ 07 июня 2018

То же самое требование, что и у меня, но я не смог найти прямого пути для достижения этой цели, поэтому то, что я сделал для своего приложения, может вам сказать.

Шаг-1: при рендеринге ваших 10 элементов в пользовательском интерфейсе с использованием xml вы можете добавить один атрибут к элементу пользовательского интерфейса (для меня это была блокировка) в файле xml.

ex:

Шаг 2: Добавить документ для перечисления событий

doc.addEventListener("highlight",_handleHighlight)

Шаг 3: Каждый раз, когда блокировка получает фокус, управление переходит к функции _handleHighlight .там вы можете найти index , основанный на том, что выполняют нумерацию страниц.

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