Es scheint, dass die UIView hat keine Methoden wie "didRemoveFromSuperview
" oder "willRemoveFromSuperview
". Dann, wie auf das Ereignis zu hören, wenn eine UIView aus seinem superView entfernt? Ich sollte KVO verwenden? Danke im Voraus!Wie wird benachrichtigt, wenn ein UIView von seinem SuperView getrennt wird?
Antwort
Sie können Ihre UIView von Unterklassen ableiten und Benachrichtigungen von ihrer - (void)removeFromSuperview
-Methode senden.
Ich finde.Api Doc sagt: willMoveToSuperview: Informiert den Empfänger, dass seine Superview im Begriff ist, in die angegebene Superview (die möglicherweise Null sein) zu ändern. ----------------------------------------- Wenn diese Methode aufgerufen wird und Der Parameter ist null, die Ansicht wird entfernt – Jagie
Dieses Thema ist ziemlich alt, aber ich habe einen Weg gefunden, es zu tun .Seit Google-Suche nicht genug hilfreich war, hier ist es (von UIView der docs genommen)
Beobachten View-Related Changes
- didAddSubview:
- willRemoveSubview:
- willMoveToSuperview:
- didMoveToSuperview
- willMoveToWindow:
- didMoveToWindow
Das funktioniert (getestet auf iOS8):
-(void) didMoveToWindow {
[super didMoveToWindow]; // (does nothing by default)
if (self.window == nil) {
// YOUR CODE FOR WHEN UIVIEW IS REMOVED
}
}
Die Standardimplementierung dieser Methode tun Es ist nichts. Unterklassen können sie überschreiben, um zusätzliche Aktionen auszuführen, wenn sich das Fenster ändert.
Die Fenstereigenschaft sein kann nil ... Dies geschieht, wenn der Empfänger von seinem Super gerade entfernt worden oder wenn der Empfänger wurde nur zu einem Superview hinzugefügt, die nicht an ein Fenster angebracht ist.
- (void) willMoveToSuperview: (UIView *) newSuperview{
if(newSuperview == nil){
// UIView was removed from superview
} else {
// UIView was added to superview
}
}
- 1. UIView - Wie wird benachrichtigt, wenn die Ansicht geladen wird?
- 2. Wie kann ein UIView einen Rückruf erhalten, wenn er zu seinem Superview hinzugefügt wird?
- 3. Wie kann ich benachrichtigt werden, wenn eine UIView sichtbar wird?
- 4. wird benachrichtigt, wenn UITextField werdenFirstResponder
- 5. benachrichtigt wird, wenn eine Dateisperre
- 6. Android - Wird benachrichtigt, wenn ein neuer Zugangspunkt erkannt wird?
- 7. Wie man benachrichtigt wird, wenn NSWindow schließt
- 8. Wie man benachrichtigt wird, wenn eine Benachrichtigung gemeldet wird
- 9. Wie wird benachrichtigt, wenn ein Redis-Schlüssel abgelaufen ist?
- 10. UIImageview wird nicht in superview zentrieren
- 11. wie man benachrichtigt wird, wenn das ble Gerät linkloss auftritt
- 12. removeFromSuperview funktioniert nicht, wenn UIView zu SKScene hinzugefügt wird
- 13. Wie erkennt man, wenn ein Audiogerät in CoreAudio getrennt wird?
- 14. Android wird benachrichtigt, wenn die Inhaltsanbieter-Bilddatenbank aktualisiert wird
- 15. Wie man benachrichtigt wird, wenn eine Eingabe gesetzt wurde
- 16. Wie wird der AVPlayer von AVPlayerItem getrennt?
- 17. Wie wird ein Farbverlaufsrahmen in UIView festgelegt?
- 18. Python: Erkennen, wenn ein Socket aus irgendeinem Grund getrennt wird?
- 19. Python: Erkennen, wenn ein Socket aus irgendeinem Grund getrennt wird?
- 20. Welche UIView wird zurückgegeben, wenn -viewWithTag verwendet wird: Wenn mehrere Ansichten dasselbe Tag haben?
- 21. Wie wird benachrichtigt, wenn der Benutzer Fitnessdaten verweigert?
- 22. UIButton funktioniert nicht, wenn die Einzelansteuerungsgeste zu superview hinzugefügt wird
- 23. UIView Animation, wenn app wieder aufgenommen wird
- 24. wird programmgesteuert benachrichtigt, wenn die Verarbeitung beendet ist
- 25. Wie man von UITableViewCell benachrichtigt wird, verschiebe Start und Ende
- 26. UIView wird nicht entfernt
- 27. Wie UIView auf der rechten Seite der Superview programmgesteuert
- 28. Wie verschiebe ich die UIView nach "unten", so dass die nächste UIView angezeigt wird?
- 29. Wie wird Ihre App benachrichtigt, wenn das iPhone eingeschaltet oder ausgeschaltet wird?
- 30. Wie man über "stumm" benachrichtigt wird, wenn App mit ClutterGstPlayback geschrieben wird
Sie wissen, wann eine Ansicht entfernt wird, weil man es sowieso in Code tun? Schließen Sie einfach Ihren Code dort oder eine Hilfsfunktion an. – Eiko