objective-c – 如何使命令-A在NSTableView中选择行中的所有NSTextView文本?

objective-c – 如何使命令-A在NSTableView中选择行中的所有NSTextView文本?,第1张

概述因此,如果我有基于NSView的tableview,并且视图内部是NSTextViews,它们是不可编辑但可选择的…… 如何才能获得命令A的优秀功能选择所有文本?我不是指行选择.我为tableview禁用了行选择.我的意思是用蓝色突出显示文本,以便将其复制到剪贴板.但不只是1行NSTextView的文本,所有行都来自所有行. 除了命令之外,点击和拖动也应该这样做.但开箱即用似乎我只能选择一行的文字 因此,如果我有基于NSVIEw的tablevIEw,并且视图内部是NSTextVIEws,它们是不可编辑但可选择的……

如何才能获得命令A的优秀功能选择所有文本?我不是指行选择.我为tablevIEw禁用了行选择.我的意思是用蓝色突出显示文本,以便将其复制到剪贴板.但不只是1行NSTextVIEw的文本,所有行都来自所有行.

除了命令之外,点击和拖动也应该这样做.但开箱即用似乎我只能选择一行的文字.这是显示问题的视频:

https://dl.dropboxusercontent.com/u/2510380/table.mov
(我一直点击并拖动但不能突出显示下一行的文字)

这里有两个mac应用程序(skype和gabble)执行此 *** 作:

https://dl.dropboxusercontent.com/u/2510380/skype.mov

https://dl.dropboxusercontent.com/u/2510380/gabble.mov

假设他们不使用仅包含HTML的WebVIEws,那么如何通过剪贴板获得此控制?即在Skype中,您选择文本,仅突出显示会话,而不是每条消息的时间戳.复制到剪贴板的文本格式也非常好.你能指出我正确的方向来反向设计skype吗?

解决方法 不幸的是,没有办法轻易做到这一点.这是因为一次只有一个控件可以是第一个响应者.这意味着,尽管您可以在多个文本视图中进行选择,但存在以下几个问题:

>实际上只有一个文本视图的文本会以“实时”高亮颜色突出显示;其他人将拥有非聚焦控件的灰色亮点.
>复制命令仅适用于第一响应者文本视图.
>拖动会话启动将从鼠标实际指向的控件启动(与第一响应者无关),并且只会拖动该控件的文本.
>在基于视图的表视图中,对于当前未显示的行,控件可能甚至“不存在”,因此除非您强行创建每一行,否则它永远不会收到消息,这对于大型表来说可能是昂贵的.

知道了这一切,你可以通过让你的控制器在文本视图和表视图子类中对第一响应者的select-all消息进行特殊处理来“伪装”它.收到此消息后,文本视图子类可以调用super然后通知控制器(获取其默认行为并让您知道它发生了),此时控制器可以转向并将命令发送到所有(现有)文本视图.通过覆盖文本视图的绘图可以欺骗突出显示,并且拖动启动可以推迟到委托(控制器),该委托将处理将模型中的所有字符串写入粘贴板(甚至不会触及可能不存在的行视图中的文本视图) ).表视图子类只是将相同的select-all消息传递给控制器​​而不调用super(甚至强制确保在返回for good measure之前没有选择任何内容).

我希望这有帮助.如果我忘记了您的任何要求,请告诉我.

总结

以上是内存溢出为你收集整理的objective-c – 如何使命令-A在NSTableView中选择行中的所有NSTextView文本?全部内容,希望文章能够帮你解决objective-c – 如何使命令-A在NSTableView中选择行中的所有NSTextView文本?所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/langs/1244704.html

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

发表评论

登录后才能评论

评论列表(0条)

保存