Добавление к ответу @Sean Rich.
contentView
- это NSClipView
между NSScrollView
и NSCollectionView
.
Чтобы это работало, оба ClipView
должны быть установлены в postsBoundsChangedNotifications
и должны быть переданы в объекте уведомления.
self.clipView.postsBoundsChangedNotifications = true
NotificationCenter.default.addObserver(self,
selector: #selector(collectionViewDidScroll(notification:)),
name: NSView.boundsDidChangeNotification,
object: self.clipView)