> 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