osx – 如何以编程方式调用NSScrollView autoscroll-method

osx – 如何以编程方式调用NSScrollView autoscroll-method,第1张

概述我有简单的聊天应用程序与文本消息基于视图的NSTableView,如下图所示。 每个消息都包含具有高度的NSTextView实例以适合所有文本。 所有我需要的是在用户选择文本拖动鼠标足够远的时候启动NSScrollView(其中包含NSTableView实例)的自动滚动。不幸的是,自动滚屏不会出现。如果在文本视图之外的任何地方拖动都会成功。 我试图通过简单地从NSTextView子类“mouse 我有简单的聊天应用程序与文本消息基于视图的NStableVIEw,如下图所示。

每个消息都包含具有高度的NSTextVIEw实例以适合所有文本。

所有我需要的是在用户选择文本拖动鼠标足够远的时候启动NSScrollVIEw(其中包含NStableVIEw实例)的自动滚动。不幸的是,自动滚屏不会出现。如果在文本视图之外的任何地方拖动都会成功。

我试图通过简单地从NSTextVIEw子类“mouse dragged”-event(如从this article的例子)中推送NSEvent-instance直接调用autoscroll:-method:

- (voID)mouseDragged:(NSEvent *)event{  [self.scrollVIEw autoscroll:event];}

当我覆盖所有的鼠标事件并实现了所有的文本选择,这种方法经常被调用。但是自动滚屏似乎不起作用。

UPDATE

我想到在调用-autoscroll之前:-method必须是-mouseDown:同一个对象。但它打破了我的文本选择机制。这个点甚至不是第一响应者,除了mouseDown:-method之外一定没有。

解决方法 通常,文本视图属于自己的滚动视图。即使这样大到足以显示所有的文字而不滚动,它仍然在那里。调用-autoscroll:在该滚动视图内的任何内容(可能包括该滚动视图本身?)将只是尝试滚动该滚动视图,而不是包含表视图的滚动视图。

尝试调用-autoscroll:在层次结构中较高的视图。 self.scrollVIEw.supervIEw,表单元视图或表视图。

请注意,即使包含文本视图的单元格视图完全在屏幕上,表视图的滚动视图也将保持滚动。事实上,它可能会继续滚动到目前为止,它在另一个方向的屏幕上。基本上,它不知道你正在文本视图中选择,所以当选择一直延伸到文本视图的边缘时,它不会停止。

另一种方法可能是尝试使用“裸”文本视图,而不包含滚动视图。我不认为IB会让你这样做,所以你必须以编程方式做。尽管如此,裸体文字视图不能很好的与自动布局。

总结

以上是内存溢出为你收集整理的osx – 如何以编程方式调用NSScrollView autoscroll-method全部内容,希望文章能够帮你解决osx – 如何以编程方式调用NSScrollView autoscroll-method所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1035567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存