2011-11-17 7 views
6

Mi aplicación para iPhone tiene dos estados: interfaz de usuario y juego. juego se juega con dispositivo de inclinación solamente así que cambié de auto-apagado en el sueño inicio del juego:iOS idleTimerComportamiento desactivado

[[UIApplication sharedApplication].idleTimerDisabled = TRUE; 

Pero tan pronto como vuelva a la interfaz de usuario, quiero auto-sleep 'que se activa de nuevo. Por lo tanto en el acabado del juego le devolveré:

[[UIApplication sharedApplication].idleTimerDisabled = FALSE; 

Después de un juego juego de largo, que dio como resultado el oscurecimiento inmediato de la primera pantalla de interfaz de usuario que vaya después del partido. Parece que cuando el temporizador inactivo estaba desactivado todavía estaba calculando el tiempo. Y se disparó inmediatamente después de "habilitar". ¿Como puedo solucionar este problema?

Respuesta

2

No sé si el idleTimer puede restablecerse mediante programación, pero una opción es requerir que el usuario toque la pantalla antes de que se vuelve atrás

Otra opción es configurar su propio tiempo de espera una vez que esté de vuelta y esperar a que se complete antes de establecer idleTimerDisabled = NO. Recuerde borrar este tiempo de espera si comienza el juego nuevamente.

+1

La segunda opción es exactamente la que ya uso. Me pregunto si existe una forma menos "hacky" de enmendar este problema. – Nick

+1

Adivinar el valor de tiempo de espera inactivo del sistema no es tan bueno, pero aparte de eso, es un "truco" bastante agradable. Podría intentar un evento táctil programático, pero incluso si funciona, no será menos "hacky". – Gil

+0

@Gil Quizás no entiendo este derecho. ¿Cómo se retrasaría arbitrariamente la configuración de idleTimerDisabled = NO call help con la "condición de carrera" que está viendo el OP? Por ejemplo, ¿qué ocurre si el temporizador iOS se estableció en 30 segundos y actualmente está en el seg 25, entonces la aplicación fuerza un retraso de 5 segundos una vez que está de vuelta. ¿No sería eso el mismo problema, ya que no conoce el estado del temporizador inactivo interno de iOS? – stonedauwg

1

Esto answer puede ser útil.

También tuve problemas al usar reproductores de música/audio, que parecían reactivar el temporizador.

ps: en ObjectiveC se debe utilizar SI/NO en lugar de verdadero/falso

+1

No veo una relación directa entre mi pregunta y la respuesta que mencionaste. Según entendí, tenían problemas para activar disable_timer. Y su solución fue establecerlo en NO e inmediatamente en SÍ. Mi situación es que el temporizador se activa y desactiva normalmente, pero "recuerda" la duración de su tiempo de desactivación y, al activarse, se dispara a la vez. ¿No hay una forma de "tocar" el dispositivo programáticamente restableciendo así el temporizador? – Nick

+0

Creo que esta sugerencia resolvió mi problema con el temporizador inactivo que estaba configurando con el valor de un UISwitch (por ejemplo, 0/1) – GeoffCoope

Cuestiones relacionadas