我正在尝试在Cocoa文本编辑器中实现打字机滚动,使插入点在其滚动视图中保持垂直居中。
为此,我已将NSClipView
子类化为scrollToPointWithoutConstraint
方法,该方法将文档滚动到指定点而不调用constrainScrollPoint
。这是必要的,因为对于短文档,除非我们滚动超出文档的边界,否则插入点不能居中。
到目前为止,这似乎相当简单,并且做了我想要的。当我尝试使用滚动条滚动时出现问题。如果我滚动到文档的末尾,这样滚动视图的一部分包含文档边界之外的区域,尝试向上滚动一小段增量会导致滚动视图跳转,立即夹到文档的实际边界。
我认为我可能需要继承NSTextView
并覆盖adjustScroll
方法;这是我的实际问题开始的地方。传递给proposedVisibleRect
的{{1}}已调整其维度,使其位于文档的实际范围内。有没有办法可以在调用adjustScroll
之前更改proposedVisibleRect
的值?或者,我是否完全错了?任何建议都会在这一点上受到高度赞赏。