0

我创建了自定义 NSPanel,并使用 Sheet 显示它。它没有任何关闭按钮,我想在 10 秒后用 NSTimer 关闭这个面板。我怎样才能做到这一点?

[[NSApplication sharedApplication] beginSheet: scanningPanel
                               modalForWindow: window
                                modalDelegate: self
                               didEndSelector: @selector(sheetDidEnd:returnCode:contextInfo:)
                                  contextInfo: nil];

[[NSApplication sharedApplication] runModalForWindow: scanningPanel];
NSTimer *myTimer = [NSTimer timerWithTimeInterval: 10.0
                                               target:self
                                             selector: @selector(closePanel:) userInfo:nil
                                              repeats:NO];

    [[NSRunLoop currentRunLoop] addTimer:myTimer forMode:NSModalPanelRunLoopMode];

closePanel() 函数:

-(void) closePanel: (NSTimer *) theTimer
{
    NSLog(@"closePanel");
    [scanningPanel abortModal]; // seems it not work
}
4

3 回答 3

1
 [NSApp endSheet:sheet];
 [NSApp orderOut:nil];
于 2013-08-29T04:56:53.620 回答
1

尝试这个:

[NSApp beginSheet:scanningPanel modalForWindow:[self window]
                                 modalDelegate:self
                                didEndSelector:nil
                                   contextInfo:self];

NSTimer *tm=[NSTimer scheduledTimerWithTimeInterval:1.0
                                             target:self
                                           selector:@selector(closePanel:)
                                           userInfo:nil
                                            repeats:NO];

- (void)closePanel:(NSTimer *)theTimer
{
    NSLog(@"closePanel");
    [NSApp endSheet:scanningPanel];
    [scanningPanel orderOut:self];
}
于 2013-08-29T10:32:50.997 回答
0

试试这个:-(void)closePanel:(NSTimer *)theTimer {

 [scanningPanel orderOut:self];
 [NSApp stopModal];

}

于 2013-08-29T06:24:14.083 回答