将启用的 NSButton 绑定到 NSTextView 中的选择

发布于 2024-08-29 08:05:41 字数 94 浏览 6 评论 0原文

我有一个按钮可以对 NSTextView 中选定的文本执行某些操作。如果没有选择任何内容,那么按下按钮时什么也不会发生...那么按钮的启用属性是否可以绑定到是否选择某些文本?

I have a button that does something to the selected text in NSTextView. If nothing is selected then nothing happens when the button is pressed... so can the enabled property of a button be bound to whether or not some text is selected?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回忆那么伤 2024-09-05 08:05:41

无论如何,您不想将一个视图绑定到另一个视图。正确的方法是将视图绑定到控制器,当您不以正确的方式做事时,绑定就会变得暴躁。

将按钮的 enabled 属性绑定到控制器的属性。让控制器成为文本视图的委托,并且当 文本视图的选择更改,相应地更新控制器的属性。

如果(was|is)没有选择任何文本,则(旧|新)选择范围数组将恰好包含一个 NSValue 对象,其 rangeValue 将是零长度范围。这个范围就是插入点的范围;它的长度将为零(未选择任何内容),但其位置可能不是零(它将位于插入点所在的位置)。

You don't want to bind a view to another view, anyway. The Right Way is to bind views to controllers, and Bindings gets cranky when you don't do things the Right Way.

Bind the button's enabled property to a property of the controller. Have the controller be the delegate of the text view, and when the text view's selections change, update the controller's property accordingly.

If no text (was|is) selected, then the (old|new) selection ranges array will contain exactly one NSValue object, whose rangeValue will be a zero-length range. This range is that of the insertion point; its length will be zero (nothing selected), but its location may not be (it will be wherever the insertion point is).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文