> On 12 May 2021, at 11:17 am, Carl Hoefs via Cocoa-dev 
> <cocoa-dev@lists.apple.com> wrote:
> 
> I'd like to present an informational alert for n seconds then dismiss it 
> without user interaction. But I don't see any way to dismiss, terminate, 
> cancel, invalidate, etc. an NSAlert object.

I recently did that exact thing, like this:

> let alert = NSAlert()
> // ...
> 
> var countdown = 10
> func updateMessage() {
>     alert.informativeText = "This message will dismiss in \(countdown) 
> second\(countdown == 1 ? "" : "s")."
>     countdown -= 1
> }
> let timer = Timer(timeInterval: 1.0, repeats: true) { timer in
>     if countdown == 0 {
>         timer.invalidate()
>         NSApp.abortModal()
>     } else {
>         updateMessage()
>     }
> }
> updateMessage()
> RunLoop.main.add(timer, forMode: .common)
> 
> alert.runModal()

The key is `abortModal()`.

-ben

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to