2012-11-26 15 views
1

當我單擊它們時,我編程式創建的按鈕基本上不會被按下。任何想法爲什麼?沒有任何反應,動作不會觸發,圖像不會變爲替代圖像等。以編程方式創建的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]; 

回答

1

您必須實現每個按鈕的setTarget:setAction:


全面貫徹的是:。

-(void)awakeFromNib{ 

    NSString *[email protected]"red.png"; 
    NSString *[email protected]"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"); 
} 

編輯:根據我的方便,我做了一些更改,圖像和框架矩形大小,你可以改變你的要求。

+0

添加了這些,它沒有做任何事情。按鈕仍然不「按」。 – arooo

+0

這是工作,按鈕的顏色從紅色變爲綠色。 –

+0

當我將它添加到窗口的內容視圖時,這起作用。我試圖將它添加到NSTableHeaderView,這可能是爲什麼?我所有的原始代碼似乎在普通視圖中工作,但打破了我將它添加到NSTableHeaderView的時刻 – arooo

0

嘗試檢查要添加按鈕的視圖的框架。 視圖可以繪製其子視圖,但是如果按鈕不在「可見」框架區域中,動作將不會收到。

相關問題