Как прокрутить NSCollectionView на страницу - PullRequest
0 голосов
/ 26 марта 2019

Я использую NSCollectionView с NSCollectionViewFlowLayout, т. Е. С плитками четного размера, с вертикальной разметкой, показывая фотографии.

Мне нравится включать прокрутку с клавиатуры, т. Е. Реагировать на клавиши Page Up и Page Down (плюс клавиши Home и End, которые я уже решил).

Похоже, что представление не поддерживает обработку этих ключей само по себе. (Или это?)

Я разделил представление на подклассы и реализовал обработчик keyDown, чтобы я мог перехватить эти клавиши и прокрутить представление самостоятельно. У меня есть доступ к приложению Scroll View, и я могу использовать этот код для прокрутки содержимого по его видимой высоте:

int dir = (up ? -1 : 1);
NSInteger contentHeight = self.enclosingScrollView.contentView.frame.size.height;
NSInteger currentY = self.enclosingScrollView.contentView.bounds.origin.y;
[self.enclosingScrollView.contentView scrollPoint:NSMakePoint(0, currentY + dir * contentHeight)];

Однако это не идеально, если, например, представление показывает одну полную и одну половинную строку. Затем, прокручивая, я бы никогда не показал полное изображение второго ряда, так как оно всегда будет обрезано.

Чтобы улучшить это, мне нужно определить высоту области только полностью видимых рядов.

Как мне это лучше всего сделать?

...