【发布时间】: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