Подкласс NSButton для изменения изображения кнопки

Я создал подкласс NSButton, чтобы изображение кнопки менялось при нажатии. Следующий код используется для подкласса.

#import "MyImageButton2.h"

@interface MyImageButton2 ()

@property (strong, nonatomic) NSCursor *cursor;

@end

@implementation MyImageButton2

- (void)setImage:(NSImage *)image {

    [super setImage:image];

    if (!self.image) {
        self.image = [NSImage imageNamed:@"buttonicon"];
    }
}

- (void)mouseDown:(NSEvent *)theEvent {

    [super mouseDown:theEvent];

    self.image = [NSImage imageNamed:@"buttonicon2"];
}

- (void)mouseUp:(NSEvent *)theEvent {

    [super mouseUp:theEvent];

    self.image = [NSImage imageNamed:@"buttonicon"];
}

- (void)resetCursorRects {

    NSCursor *cursor = (self.cursor) ? self.cursor : [NSCursor pointingHandCursor];

    if (cursor) {
        [self addCursorRect:[self bounds] cursor:cursor];
    } else {
        [super resetCursorRects];
    }
}

@end

А вот и текущая кнопка. Как видите, кнопка не возвращается к исходному изображению после нажатия, событие mouseUp.

введите здесь описание изображения

Любые идеи о том, почему изображение не возвращается в исходное состояние во время события mouseUp?


person wigging    schedule 03.05.2014    source источник


Ответы (1)


Для этого вам не обязательно создавать подкласс NSButton. Это легко сделать в файле XIB. В инспекторе свойств Interface Builder выберите свою кнопку и установите Type на Momentary Change, а затем введите buttonicon под Image и buttonicon2 под Alternate.

person 0xC0DEBEEF    schedule 03.05.2014