【问题标题】:How can my code get notified when the user pastes or drags an image into NSImageView?当用户将图像粘贴或拖动到 NSImageView 中时,我的代码如何得到通知?
【发布时间】:2011-01-29 22:19:20
【问题描述】:

我有一个 NSImageView 的实例。我已经告诉 InterfaceBuilder 允许用户将图像粘贴或拖动到此视图中。这行得通。但是,我在 NSImageView 或相关文档中看不到在实际发生这种情况时得到通知的方法。我期待一个代表或类似的人,但我一直找不到它。有什么想法吗?

【问题讨论】:

    标签: cocoa delegates nsimageview


    【解决方案1】:

    这是 Cocoa Bindings 最擅长的。

    与其与视图对话,不如简单地拥有一个值为图像的属性,并将图像视图的image绑定绑定到它;那么,当你想自己改变图像视图中的图像时,你所要做的就是设置属性的值,图像视图会注意到变化。

    用户粘贴或拖动到图像视图中本质上是相同的,部分相反:粘贴或拖放将改变图像视图的值,然后设置您的属性值,这将导致其他任何事情绑定到它以注意到更改并像以前一样获取新值。

    除了删除您现有的 send-explicit-messages-to-views 代码之外,这几乎不需要任何代码工作:您需要的唯一代码就是您的财产。您将在 IB 中连接绑定。

    请参阅 the Key-Value Coding Programming Guidethe Cocoa Bindings Programming Topics

    【讨论】:

    • 可能值得注意的是,NSImageView 会在图像落到其目标上时向其目标发送一个动作,这是处理它的另一种方式。
    • Rob Keniger:我什至建议将其作为答案。
    • 我最终会深入研究绑定,但现在我想熟悉底层设施。我有信心理解它们将使我成为一个更好的调试器,而且现在我还没有到最后期限,并且有幸不选择最高级别的方式来做所有事情。 Rob 的答案提示闻起来像是赢家,事实上我只是用它来追踪一些文档并弄清楚如何告诉 IB NSImageView 的实例应该在图像更改时向我的控制器发送消息。 Rob 应该把他的暗示变成一个正确的答案,这样我就可以指定它。
    【解决方案2】:

    对我来说,重写函数的更好方法

    -(void)paste:(id)sender

    但前提是你有它在基于 NSView 的类中,它有 NSResponder 作为父类

    【讨论】:

      猜你喜欢
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多