【发布时间】:2011-01-29 22:19:20
【问题描述】:
我有一个 NSImageView 的实例。我已经告诉 InterfaceBuilder 允许用户将图像粘贴或拖动到此视图中。这行得通。但是,我在 NSImageView 或相关文档中看不到在实际发生这种情况时得到通知的方法。我期待一个代表或类似的人,但我一直找不到它。有什么想法吗?
【问题讨论】:
标签: cocoa delegates nsimageview
我有一个 NSImageView 的实例。我已经告诉 InterfaceBuilder 允许用户将图像粘贴或拖动到此视图中。这行得通。但是,我在 NSImageView 或相关文档中看不到在实际发生这种情况时得到通知的方法。我期待一个代表或类似的人,但我一直找不到它。有什么想法吗?
【问题讨论】:
标签: cocoa delegates nsimageview
这是 Cocoa Bindings 最擅长的。
与其与视图对话,不如简单地拥有一个值为图像的属性,并将图像视图的image绑定绑定到它;那么,当你想自己改变图像视图中的图像时,你所要做的就是设置属性的值,图像视图会注意到变化。
用户粘贴或拖动到图像视图中本质上是相同的,部分相反:粘贴或拖放将改变图像视图的值,然后设置您的属性值,这将导致其他任何事情绑定到它以注意到更改并像以前一样获取新值。
除了删除您现有的 send-explicit-messages-to-views 代码之外,这几乎不需要任何代码工作:您需要的唯一代码就是您的财产。您将在 IB 中连接绑定。
请参阅 the Key-Value Coding Programming Guide 和 the Cocoa Bindings Programming Topics。
【讨论】:
NSImageView 会在图像落到其目标上时向其目标发送一个动作,这是处理它的另一种方式。
对我来说,重写函数的更好方法
-(void)paste:(id)sender
但前提是你有它在基于 NSView 的类中,它有 NSResponder 作为父类
【讨论】: