Я получил два экземпляра 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
Есть ли способ добиться плавной синхронной прокрутки на коллекциях будок?