如何检测NSButton上的鼠标悬停。 Obj-C,可可

时间:2012-11-20 13:54:37

标签: objective-c cocoa mouseevent mousehover

我有一个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上看过一些东西,但对如何使用它并不积极,更重要的是,我想知道是否还有其他方法可以解决它。例如已经调用的事件或其他事件。

1 个答案:

答案 0 :(得分:5)

你需要对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