我正在将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)];
但是,例如,如果视图显示一整行和一半的行,则这不是理想的。然后,通过滚动,我永远不会显示第二行的完整图像,因为它总是会被剪切掉。
要改善这一点,我只需要确定完全可见行的区域的高度即可。
我如何做到最好?