Ролловеры кнопок какао с помощью mouseEntered: и mouseExited:?

В надежде создать эффект наведения курсора на кнопку, я создал подкласс NSButton под названием Button.

Button.h:

#import <AppKit/AppKit.h>

@interface Button : NSButton {
}

- (void)mouseEntered:(NSEvent *)theEvent;
- (void)mouseExited:(NSEvent *)theEvent;
- (void)mouseDown:(NSEvent *)ev;
- (void)mouseUp:(NSEvent *)theEvent;

@end

Button.m: #import "Button.h"

@implementation Button

- (id)initWithFrame:(NSRect)frameRect  {
    self = [super initWithFrame:frameRect];
    if(self != nil) {
    NSLog(@"btn init");
}
    return self;
}


- (void)mouseEntered:(NSEvent *)theEvent{
    NSLog(@"mouseEntered");
    [self setImage:[NSImage imageNamed:@"lockIcon_2.png"]];
    [self setNeedsDisplay];
}
- (void)mouseExited:(NSEvent *)theEvent{
    [self setImage:[NSImage imageNamed:@"lockIcon_1.png"]];
    NSLog(@"mouseExited");  
    [self setNeedsDisplay];
}

- (void)mouseDown:(NSEvent *)ev {
    NSLog(@"mouseDown!");
}

- (void)mouseUp:(NSEvent *)ev {
    NSLog(@"mouseUp!");
}

@end

С помощью приведенного выше кода каждый раз, когда я нажимаю кнопку I см. «mouseDown» в журналах, но я не вижу «mouseEntered» или «mouseExited» (и, конечно, не вижу изменения изображения) ?? К сожалению, я знаю, что упускаю что-то очевидное, но я просто не вижу ... ???

10
задан Jason Harrison 14 September 2015 в 23:06
поделиться