UICollectionView scrollRectToVisible и scrollToItem прерывают пользовательскую прокрутку - PullRequest
0 голосов
/ 16 ноября 2018

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

var pages: [PDFPage]?

var currentPage: PDFPage?

override func viewDidLayoutSubviews() {
    // Scroll to currently opened page
    if let current = currentPage, let idx = pages?.firstIndex(of: current) {
        collectionView?.scrollToItem(at: IndexPath(item: idx, section: 0), at: .centeredVertically, animated: false)
    }
}

Он работает, как и ожидалось, но полностью блокирует пользовательскую прокрутку, чтобы, я думаю, всегда держать элемент в запрошенном положении. То же самое происходит при использовании scrollRectToVisible. Вместо этого я бы хотел, чтобы он только перемещался к элементу, а затем позволял пользователю прокручивать все, что он хочет. Какое поведение я получаю с scrollToRow UITableViewController.

Я что-то упустил?

1 Ответ

0 голосов
/ 21 ноября 2018

Оказалось, что вызов прокрутки в viewDidLayoutSubviews был проблемой, потому что она постоянно повторялась и препятствовала дальнейшей прокрутке. Я решил проблему следующим образом:

var currentPage: PDFPage?

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    // Scroll to currently opened outline
    if let current = currentPage, let idx = pages?.firstIndex(of: current) {
        collectionView?.scrollToItem(at: IndexPath(item: idx, section: 0),
                                     at: .top,
                                     animated: false)

        // In order to only run the scroll once, without locking the view
        currentPage = nil
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...