PDA

View Full Version : Close NSAlert after some time using Timer




Tejashree
Jun 15, 2009, 04:20 AM
Hi,
I want to close a alert Window (NSAlert) after specific period of time if user
does not click on any of the buttons.
Is there a way to set up a NSTimer to close the Alert Panel after 10 secs.

I am doing following thing and its working. But I know this wrong way to do this.
..........................................
NSAlert *alert = [[[NSAlert alloc] init] autorelease];
[alert addButtonWithTitle: @"OK"];
[alert setMessageText: @"Attention!!! This a critical Alert."];
[alert setAlertStyle: NSInformationalAlertStyle];

NSTimer *myTimer = [NSTimer timerWithTimeInterval: 5
target:self
selector: @selector(killWindow:)
userInfo:nil
repeats:NO];

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

int choice = 0;
choice = [alert runModal];
if(choice != 0)
[myTimer invalidate];
..........................................
-(void) killWindow:(NSTimer *) theTimer
{
NSLog(@"killWindow");
[[alert window] close];
}
..........................................


Can anyone please suggest the best way to do this.

Thanks,
Tejashree.



HiRez
Jun 15, 2009, 11:22 AM
Why do say you know it's wrong? You said it works, right? Only thing I can see is you set of for 5 seconds when you said you wanted 10.

mathcolo
Jun 16, 2009, 01:19 AM
Yeah, if it's working for you then I wouldn't bother changing it. Despite that, that's how I'd do it; an NSTimer controlling NSAlert.

Sometimes you have to just let code be code :D