¿Cómo ser notificado cuando una UIView se ha desprendido de su superView?

Parece que UIView no tiene methods como " didRemoveFromSuperview " o " willRemoveFromSuperview ". willRemoveFromSuperview , ¿Cómo escuchar el evento cuando se elimina una UIView de su superView? ¿Debo usar KVO? ¡gracias por adelantado!

Este tema es bastante antiguo, pero encontré una manera de hacerlo. Dado que la búsqueda en Google no fue lo suficientemente útil, aquí está (tomada de los documentos de UIView)

Observar los cambios relacionados con la vista

– didAddSubview:

– willRemoveSubview:

– willMoveToSuperview:

– didMoveToSuperview

– willMoveToWindow:

– didMoveToWindow

Esto funciona (probado en iOS8):

 -(void) didMoveToWindow { [super didMoveToWindow]; // (does nothing by default) if (self.window == nil) { // YOUR CODE FOR WHEN UIVIEW IS REMOVED } } 

De acuerdo con los documentos de UIView :

La implementación pnetworkingeterminada de este método no hace nada. Las subclasss pueden anularlo para realizar acciones adicionales cada vez que cambie la window.

La propiedad de la window puede ser nulaEsto ocurre cuando el receptor acaba de ser eliminado de su vista de supervisión o cuando el receptor acaba de ser agregado a una vista de supervisión que no está conectada a una window.

Puede subclasificar su UIView y publicar notifications desde su método - (void)removeFromSuperview .

 - (void) willMoveToSuperview: (UIView *) newSuperview{ if(newSuperview == nil){ // UIView was removed from superview } else { // UIView was added to superview } }