Два NSCollectionView прокрутки синхронизации - PullRequest
0 голосов
/ 27 августа 2018

Я получил два экземпляра NSCollectionView в одном контроллере и хочу прокрутить их оба синхронно. Поэтому я реализовал пользовательский класс NSSrollView и назначил его на включение scrollView в одну из этих коллекций. Вот код:

protocol CustomScrollViewDelegate: class
{

    func customScrollView(_ CustomScrollView: CustomScrollView, didScrollWith event: NSEvent)

}

class CustomScrollView: NSScrollView
{

    weak var delegate: CustomScrollViewDelegate?

override func scrollWheel(with event: NSEvent)
{
    switch event.phase
    {
        case NSEvent.Phase.changed:
            delegate?.customScrollView(self, didScrollWith: event)

        default:
            break
    }

    switch event.momentumPhase
    {
        case NSEvent.Phase.changed:
            delegate?.customScrollView(self, didScrollWith: event)

        default:
            break
    }

    super.scrollWheel(with: event)
   }
}

Во втором collectionView я соответствую протоколу CustomScrollViewDelegate и выполняю:

self.collectionView.enclosingScrollView?.scrollWheel(with: event)

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

https://youtu.be/RzbKFYVPQhY

Есть ли способ добиться плавной синхронной прокрутки на коллекциях будок?

...