【问题标题】:Event Handling Without Subclassing没有子类化的事件处理
【发布时间】:2012-10-05 00:44:45
【问题描述】:

我最近看了一些关于如何在 Objective C 和 Cocoa 中编程的 Lynda 教程。来自 PHP 和 C# 背景的一件事引起了我的注意——事件处理。在我观看教程时,导师正在通过子类化以附加到事件。

他最终讨论了以这种方式创建委托和附加到事件 - 更好,但仍然不像 C# 那样容易。然而,我后来发现并非所有事物都有委托,这让事情变得更加更加困难。

我一直在互联网上寻找一种无需创建子类即可处理事件的方法,这样我就不会得到这个包含大量文件的应用程序,但无济于事。

我特别想为 NSSlider 对象附加 mouseLeave 或 mouseOut 事件,以便在标签完成滑动后隐藏标签。

有什么方法可以在不进行任何子类化的情况下附加到事件,或者在子类之后创建子类,我应该习惯于这样做吗?

【问题讨论】:

  • 如果你只是想在完成移动滑块后做一些事情,只需将它放在action方法中——当你停止移动滑块时调用它(如果它没有设置为连续)。
  • @rdelmar - 我希望它是连续的,因为我有一个标签会随着滑块的移动而更新,我希望一旦触发 mouseUp 事件后标签就会隐藏。跨度>
  • 那么我认为你需要子类化——这有什么问题?你只需要重写一个方法,mouseUp。
  • 如果你在很多不同的对象上有很多事件,这不是有点混乱吗?
  • 如果你真的需要将它们全部子类化,它可以,但我认为这通常是不必要的。根据对象的不同,可以通过委托对控件进行大量自定义。

标签: objective-c xcode cocoa appkit


【解决方案1】:

事件处理有几种方法。 就像你说的,子类化可能是最简单的。 使用委托是另一种方式。在我看来,往往是最好的。 另一种选择是使用块。

在我看来,Objective-C 非常结构化,我更喜欢它而不是 C#。

【讨论】:

  • 谢谢 - 我只需要习惯子类化。
猜你喜欢
  • 1970-01-01
  • 2016-03-03
  • 2013-08-02
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多