scheduledtimer example create xcode osx swift nstimer nsrunloop

xcode - example - NSTimer no se activa cuando NSMenu está abierto en Swift



swift timer (1)

Tengo un temporizador que se ejecuta para reiniciar una alarma una vez que se apaga.

alarm = NSTimer.scheduledTimerWithTimeInterval( 60 * minutesConstant + secondsConstant, target:self, selector: Selector("endSession"), userInfo: nil, repeats:false)

Su función de selector establece un indicador de modo y llama a la función original que establece la alarma con nuevos minutos y constantes de segundos, y también envía una notificación al usuario de que la sesión se ha reiniciado.

Tengo un elemento de menú que se actualiza con el tiempo restante

Así que lo he estado abriendo para verificar que mi alarma se reinicie y que la notificación se muestre una vez que llegue a cero. Funciona, pero cuando tengo el menú abierto y se pone a cero, simplemente permanece a las 0:00 y el temporizador no se dispara hasta que hago clic en el menú en el que se muestra inmediatamente la notificación y restablece el temporizador como estaba previsto. .

¿Cómo puedo forzar al temporizador a disparar cuando el menú está abierto? No es gran cosa, pero no quiero que el usuario se confunda con la sesión, solo se cuelga si miran cómo se apaga el temporizador.


Solo tiene que agregar su temporizador al runloop principal de la siguiente manera:

Swift 3

RunLoop.main.add(alarm, forMode: .commonModes)

Swift 2.x

NSRunLoop.mainRunLoop().addTimer(alarm, forMode: NSRunLoopCommonModes)