Пользовательский лист: не может нажимать кнопки - PullRequest
0 голосов
/ 10 февраля 2012

Я использовал этот источник http://www.cats.rwth -aachen.de / library /рограмма / cocoa

, чтобы создать свой собственный лист.

Я создал NSPanelобъект в существующем файле .xib и связанный с IBOutlet

Мой исходный код:

.h

@interface MainDreamer : NSWindow <NSWindowDelegate> 
{    
 ...
 NSPanel *newPanel;
}
...
@property (assign) IBOutlet NSPanel *newPanel;

.m

@dynamic newPanel;
...

//this method is wired with button on main window and calls a sheet
- (IBAction)callPanel:(id)sender
{
    [NSApp beginSheet:newPanel
       modalForWindow:[self window] modalDelegate:self
       didEndSelector:@selector(myPanelDidEnd:returnCode:contextInfo:)
          contextInfo: nil]; //(__bridge void *)[NSNumber numberWithFloat: 0]
}

//this method is wired with cancel and ok buttons on the panel
- (IBAction)endWorkPanel:(id)sender
{
    [newPanel orderOut:self];
    [NSApp endSheet:newPanel returnCode:([sender tag] == 9) ? NSOKButton : NSCancelButton];
} 

//closing a sheet
- (void)myPanelDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo
{
    if (returnCode == NSCancelButton) return;
    else{
        return;
    }
}

Так что callPanel работает нормально, лист появляется, но я не могу взаимодействовать с элементами управления на листе (с помощью кнопок).Они не реагируют на щелчок (даже визуально).

В чем проблема?

1 Ответ

0 голосов
/ 11 февраля 2012

Хех, я забыл про

[newDreamPanel close];

в applicationDidFinishLaunching методе.Я написал это потому, что хотел, чтобы панель не появлялась при запуске главного окна.

Фактически, свойство панели Visible At Launch должно быть активировано в IB.Метод close тоже работает, но побочным эффектом является то, что все элементы управления становятся недоступными на панели.

...