Как прокрутить UIScrollView с использованием анимации, не прерывая другие функции? - PullRequest
0 голосов
/ 11 мая 2018

В этом приложении вы можете нажать на стихи, чтобы выделить их. Я добавил функцию прокрутки, чтобы она прокручивалась сама по себе с помощью animate. Но всякий раз, когда начинается прокрутка, я не могу больше касаться стихов, пока не остановлю прокрутку. Вот мой код:

@objc func move_view() {
    print("moved view")
    self.current_scroll_position += 3
    UIView.animate(withDuration: 0.5, delay: 0, options: .curveLinear, animations: {
        self.scroll_view.contentOffset = CGPoint(x: 0, y: CGFloat(self.current_scroll_position))
    }, completion: nil)
}

// start scrolling
print("start scrolling")
self.current_scroll_position = Int(self.scroll_view.contentOffset.y)

self.scroll_timer = Timer.scheduledTimer(timeInterval: TimeInterval(0.5), target: self, selector: #selector(self.move_view), userInfo: nil, repeats: true)
RunLoop.current.add(self.scroll_timer, forMode: .commonModes)

self.is_scrolling = true

Вот выделение без прокрутки:

without scroll

А вот так выглядит свиток:

with scroll

Как вы видите, я не могу нажать, когда он прокручивается, как я могу это исправить?

1 Ответ

0 голосов
/ 13 мая 2018

UIViewAnimationOptions имеет константу allowUserInteraction, поэтому вы можете использовать ее следующим образом:

UIView.animate(withDuration: 0.5, delay: 0, options: [.curveLinear, .allowUserInteraction], animations: {
    self.scroll_view.contentOffset = CGPoint(x: 0, y: CGFloat(self.current_scroll_position))
}, completion: nil)

, которая должна позволять жесты пользователя на виде во время анимации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...