如何按页面滚动NSCollectionView

时间:2019-03-26 15:58:09

标签: macos nsscrollview nscollectionview

我正在将NSCollectionViewNSCollectionViewFlowLayout配合使用,即使用具有垂直布局并显示图片的均匀大小的图块。

我想启用键盘滚动功能,即响应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)];

但是,例如,如果视图显示一整行和一半的行,则这不是理想的。然后,通过滚动,我永远不会显示第二行的完整图像,因为它总是会被剪切掉。

要改善这一点,我只需要确定完全可见行的区域的高度即可。

我如何做到最好?

0 个答案:

没有答案