Программно созданные NSButtons не будут нажимать
Мои программно созданные кнопки практически не нажимаются, когда я нажимаю на них. Есть идеи почему? Ничего не происходит, действие не запускается, изображение не меняется на альтернативное изображение и т. Д.
(Я использую MomentaryChangeButton, но я установил его в MomentaryPushIn (чтобы проверить, толкает он или нет. Это не удручает.)
NSButton *titleButton = [[NSButton alloc]initWithFrame:NSMakeRect(TITLE_BUTTON_X_OFFSET, TITLE_BUTTON_Y_OFFSET, TITLE_BUTTON_WIDTH, TITLE_BUTTON_HEIGHT)];
[titleButton setBordered:NO];
[titleButton setNeedsDisplay:YES];
[titleButton setImage:[NSImage imageNamed:TITLE_BUTTON_NAME]];
[titleButton setAlternateImage:[NSImage imageNamed:TITLE_BUTTON_PRESSED_NAME]];
[titleButton setButtonType:NSMomentaryChangeButton];
[self addSubview:titleButton];
NSButton *aboutButton = [[NSButton alloc]initWithFrame:NSMakeRect(ABOUT_BUTTON_X_OFFSET, ABOUT_BUTTON_Y_OFFSET, ABOUT_BUTTON_WIDTH, ABOUT_BUTTON_HEIGHT)];
[aboutButton setBordered:NO];
[aboutButton setNeedsDisplay:YES];
[aboutButton setButtonType:NSMomentaryChangeButton];
[aboutButton setImage:[NSImage imageNamed:ABOUT_BUTTON_NAME]];
[aboutButton setAlternateImage:[NSImage imageNamed:ABOUT_BUTTON_PRESSED_NAME]];
[[aboutButton image] setSize:NSMakeSize(ABOUT_BUTTON_WIDTH, ABOUT_BUTTON_HEIGHT)];
[[aboutButton alternateImage]setSize:NSMakeSize(ABOUT_BUTTON_WIDTH, ABOUT_BUTTON_HEIGHT)];
[self addSubview:aboutButton];
NSButton *settingsButton = [[NSButton alloc]initWithFrame:NSMakeRect(SETTINGS_BUTTON_X_OFFSET, SETTINGS_BUTTON_Y_OFFSET, SETTINGS_BUTTON_WIDTH, SETTINGS_BUTTON_HEIGHT)];
[settingsButton setBordered:NO];
[settingsButton setNeedsDisplay:YES];
[settingsButton setButtonType:NSMomentaryChangeButton];
[settingsButton setImage:[NSImage imageNamed:SETTINGS_BUTTON_NAME]];
[settingsButton setAlternateImage:[NSImage imageNamed:SETTINGS_BUTTON_PRESSED_NAME]];
[[settingsButton image] setSize:NSMakeSize(SETTINGS_BUTTON_WIDTH, SETTINGS_BUTTON_HEIGHT)];
[self addSubview:settingsButton];
2 ответа
Вы должны реализовать setTarget:
а также setAction:
для каждой из кнопок.
Полная реализация это:
-(void)awakeFromNib{
NSString *SETTINGS_BUTTON_NAME=@"red.png";
NSString *SETTINGS_BUTTON_PRESSED_NAME=@"green.png";
NSButton *settingsButton = [[NSButton alloc]initWithFrame:NSMakeRect(20, 500, 120, 32)];
[settingsButton setBordered:YES];
[settingsButton setNeedsDisplay:YES];
[settingsButton setButtonType:NSMomentaryChangeButton];
[settingsButton setImage:[NSImage imageNamed:SETTINGS_BUTTON_NAME]];
[settingsButton setAlternateImage:[NSImage imageNamed:SETTINGS_BUTTON_PRESSED_NAME]];
[[settingsButton image] setSize:NSMakeSize(120,32)];
[settingsButton setTitle:@"title"];
[settingsButton setTarget: self];
[settingsButton setAction: @selector(invisible:)]; //invisible is a selector see below
[self.window.contentView addSubview: settingsButton];
}
- (IBAction)invisible:(id)sender{ //change this name accordingly
NSLog(@"yepiiee");
}
РЕДАКТИРОВАТЬ: в соответствии с моим удобством я сделал некоторые изменения, как, изображения и размер прямоугольника кадра, вы можете изменить в соответствии с вашими требованиями
Попробуйте проверить кадр вида, к которому вы добавляете кнопки. Представление может нарисовать свои подпредставления, но если кнопки не находятся в "видимой" области кадра, действие не получится.