2011-01-01 12 views
5

A veces, las interrupciones, tales como llamada de teléfono ocurren y alterar un comportamiento regular de una aplicación en iPhone o iPad.Cómo capturar cancallation de UIScrollView u otros?

Por ejemplo, creé una instancia de UIScrollView e implementé los métodos de delegado de UIScrollView: scrollViewWillBeginDragging y scrollViewDidEndDragging (y scrollViewDidEndDecelerating).

Un método scrollViewWillBeginDragging desactiva todos los botones personalizados en mi aplicación. Luego los métodos scrollViewDidEndDragging y scrollViewDidEndDecelerating activaron estos botones personalizados. Es decir, mientras el usuario se desplazaba, todos los botones personalizados se desactivaron por un tiempo.

El problema era que mientras el usuario comenzó a arrastrar y acaba de celebrar una instancia UIScrollView, si tomo una captura de pantalla pulsando un botón de inicio y un botón de encendido, entonces cualquiera de scrollViewDidEndDragging y scrollViewDidEndDecelerating no se llamó . Entonces la aplicación se convirtió en un problema arriba.

Implementé un método UIApplicationWillResignActiveNotification en mi UIViewController, pero no me llamaron después de tomar una captura de pantalla.

Como puedo coger cualquier tipo de interrupción que perturba un flujo regular de los acontecimientos?

A veces, touchesEnd y touchesCanceled no recibieron mayores llamados también debido a una interrupción.

Gracias.

+0

¿Qué hay de la implementación de viewWillAppear o viewDidAppear y pruebas si son llamados después de tomar una captura de pantalla? Luego, en esos métodos if (beingDragged == TRUE) llama a tu método scrollViewDidEndDragging. – adam

+0

viewDidScroll método también se llama incluso en interrupciones? probablemente no, y ahí tienes un enfoque alternativo para tu problema. – nacho4d

+0

Soy nuevo en las cosas, por lo que no estoy seguro de por qué desactivarías un botón cuando el usuario usaba una vista diferente. La impresión que tengo de varias lecturas es que la única vez que desearía desactivar un botón es cuando en realidad no puede realizar su función porque falta un poco de datos, es decir, no hay selección, o un campo no rellenado, etc. . –

Respuesta

2

que enfrentan el mismo problema y se deshizo de ella mediante el uso de performSelector:withObject:afterDelay método de NSObject.

En scrollViewDidScroll:

[NSObject cancelPreviousPerformRequestsWithTarget:yourController]; 
[yourController deactivateButtons]; 
[yourController performSelector:@selector(activateButtons) withObject:nil afterDelay:0.5]; 

Puede probar esta técnica y combinarla con otra que usted ha mencionado.
Espero, eso ayudará. ¡Buena suerte!

Cuestiones relacionadas