将启用的 NSButton 绑定到 NSTextView 中的选择
我有一个按钮可以对 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
无论如何,您不想将一个视图绑定到另一个视图。正确的方法是将视图绑定到控制器,当您不以正确的方式做事时,绑定就会变得暴躁。
将按钮的
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).