我试图在我的 Cocoa 文本编辑器中实现打字机滚动,保持插入点在其滚动视图中垂直居中。
为此,我进行了子类化NSClipView
以提供一种scrollToPointWithoutConstraint
方法,该方法无需调用即可将文档滚动到指定点constrainScrollPoint
。这是必要的,因为对于短文档,插入点不能居中,除非我们滚动超出文档的边界。
到目前为止,这似乎相当简单,并且可以满足我的要求。当我尝试使用滚动条滚动时,问题就出现了。如果我滚动到文档的末尾,这样滚动视图的一部分包含文档边界之外的区域,尝试向上滚动一个小增量会导致滚动视图跳转,立即夹紧到文档的实际边界。
我收集到我可能需要子类NSTextView
化并覆盖该adjustScroll
方法;这是我的实际问题开始的地方。proposedVisibleRect
传递给的已经adjustScroll
调整了其尺寸,以便它们位于文档的实际范围内。有没有办法可以改变proposedVisibleRect
before的值adjustScroll
?或者,我是否完全错了?在这一点上,任何建议将不胜感激。