应用编辑时更改NSTextView滚动点

时间:2019-02-13 04:02:07

标签: ios swift xamarin

我有一个NSTextView用户可以输入。不同之处在于,我经常在用户输入TextStorage时对它们进行更改(例如,某些信息是通过网络输入的,我需要将其表示为{{1 }}合并这些更改。

我可以成功做到这一点-我创建了一个NSTextView,即使在幕后发生变化时,它也可以跟踪MovableCursor

我使这段代码适用于SelectedRangeiOS (UITextView)。问题是,在Mac上,Mac (NSTextView)通常会在滚动条中跳转(即,视图中的可见位置发生变化)。它在NSTextView上根本不会移动-一切正常,即使UITextView发生了变化,光标也不在窗口中移动。

仅使用TextStorage不起作用-可能使选择可见,但必须在同一位置将其显示。

我尝试抓住Scroller的VerticalScroller位置,然后在进行更改后重新应用它。

ScrollRangeToVisible

好吧,我可以看到滚动条没有移动(预期),但是文本仍然移动。滚动条某种程度上通过var scroll_pos = contentViewScroller.VerticalScroller.FloatValue; ...make changes... contentViewScroller.VerticalScroller.FloatValue = scroll_pos; 偏离了其位置。当我开始移动滚动条时,似乎有点“轻拂”并重新对齐。

因此...关于如何更改NSTextView的TextStorage,同时将Cursor(或SelectedRange)固定在屏幕上相同位置的任何想法。

[注意:当然,有时无法实现这种固定性-例如,如果删除了光标之前的所有内容,则光标必须移至顶部。没关系。]

非常感谢。

0 个答案:

没有答案