¿Cómo capturar cancallation de UIScrollView u otros?

A veces, se producen interrupciones como llamadas telefónicas y perturban el comportamiento regular de una aplicación en iPhone o iPad.

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

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

El problema era que, mientras el usuario comenzaba a arrastrar y tenía una instancia de UIScrollView, si tomaba una captura de pantalla presionando un button de inicio y un button de encendido, no se llamaba ninguna de scrollViewDidEndDragging y scrollViewDidEndDecelerating. Entonces, la aplicación se convirtió en un desastre.

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

¿Cómo puedo atrapar algún tipo de interrupción que perturbe un flujo regular de events?

A veces, toca Fin y toca Cancelled no recibió llamadas debido a una interrupción.

Gracias.

Me enfrenté al mismo problema y me deshice de él usando performSelector:withObject:afterDelay method of NSObject.

En scrollViewDidScroll:

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

Puedes probar esta técnica y combinarla con otra que hayas mencionado.
Espero que eso te ayude. ¡Buena suerte!