Reputation: 4783
I have a Mac application that has two NSButtons on each bottom corner of the window. I have set their Alpha = .5
in the .xib. I want to know how to detect a mouse hover over the button and change the alpha to lets say .9. How do I do this? I suppose all you need to know from my code is the .h.
@property (unsafe_unretained) IBOutlet NSButton *leftButton;
@property (unsafe_unretained) IBOutlet NSButton *rightButton;
Those are synthesized in my .m. Deployment target is OS X 10.6+. Thanks.
EDIT
I really haven't tried anything. I have seen something on NSTrackingArea, but am not positive on how to use it, more importantly, I was wondering if there was another way to go about it. Such as an event that is already called or something.
Upvotes: 4
Views: 5992
Reputation: 46543
You need to Subclass the NSButton class (or even better the NSButtonCell class).
- (void)mouseEntered:(NSEvent *)theEvent;
- (void)mouseExited:(NSEvent *)theEvent;
They should get called when the mouse enter and exit the area. You may also need to re create the tracking area, look here:
- (void)updateTrackingAreas
For fade in and fade out effect I played with animator and alpha value for example:
[[self animator]setAlphaValue:0.9];
EDIT: This is just for reference, so that you can take some ideas
@interface MyButton : NSButton {
- (void)mouseEntered:(NSEvent *)theEvent;
- (void)mouseExited:(NSEvent *)theEvent;
- (void)updateTrackingAreas;
@end
Upvotes: 5