objective-c – 如何使命令-A在NSTableView中选择行中的所有NSTe
因此,如果我有基于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之前没有选择任何内容). 我希望这有帮助.如果我忘记了您的任何要求,请告诉我. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |