如何检测鼠标悬停在NSButton上.Obj-C,可可



我有一个Mac应用程序,在窗口的每个底角有两个NSButton。我已经在 .xib 中设置了他们的Alpha = .5。我想知道如何检测鼠标悬停在按钮上并将 alpha 更改为 .9。我该怎么做?我想你需要从我的代码中知道的只是 .h。

@property (unsafe_unretained) IBOutlet NSButton *leftButton;
@property (unsafe_unretained) IBOutlet NSButton *rightButton;

这些是在我的.m.中合成的,部署目标是OS X 10.6+。谢谢。

编辑

我真的什么都没试过。我在NSTrackingArea上看到了一些东西,但对如何使用它并不乐观,更重要的是,我想知道是否有另一种方法可以解决这个问题。例如已经调用的事件或其他内容。

你需要对NSButton类进行子类化(甚至更好的是NSButtonCell类)。

- (void)mouseEntered:(NSEvent *)theEvent;
- (void)mouseExited:(NSEvent *)theEvent;

当鼠标进入和离开该区域时,应该会调用它们。您可能还需要重新创建跟踪区域,请看这里:

- (void)updateTrackingAreas

对于淡入淡出效果,我使用了动画师和 alpha 值,例如:

[[self animator]setAlphaValue:0.9]; 

编辑:这只是供参考,以便您可以采取一些想法

@interface MyButton : NSButton {
- (void)mouseEntered:(NSEvent *)theEvent;
- (void)mouseExited:(NSEvent *)theEvent;     
- (void)updateTrackingAreas;
@end

最新更新