Ich habe überall nach einer Antwort gesucht, und ich habe versucht, es zu implementieren, aber nichts funktioniert. Grundsätzlich muss ich in der Lage sein, Änderungen im Subview-Array einer VC-Ansicht zu beobachten. Wenn eine vorhandene Ansicht aus diesem Array entfernt wird, möchte ich darüber informiert werden und Code ausführen.
Ist es möglich?
BEARBEITEN - Weitere Informationen
Ich versuche eine Lösung für einen seltsamen Edge Case Bug zu finden, bei dem das schnelle Antippen der UISearchBar eines UISearchDisplayControllers (sehr benutzerdefiniert) dazu führt, dass der sdController (oder besser die managed searchBar im navBar Effekt) aus der View verschwindet sdController ist NOCH AKTIV. Das bedeutet, dass die navBar am Ursprung -y bleibt und die folgende Tabelle nicht scrollbar ist.
Mein ursprünglicher Gedanke war, zu einem Zustand zu kommen, in dem der sdController aktiv war, aber die UISearchDisplayControllerContainerView war nicht in der View-Hierarchie. Ich habe versucht, dies in der VC-AnsichtDidLayoutSubviews zu testen, aber leider, wenn Sie auf eine Suchleiste tippen und die Animation sdController initiieren, ist der SdController aktiv und die UISearchDisplayControllerContainerView ist nicht in der Ansichtshierarchie: (.
Wie bei den meisten Eigenschaften in Apples Frameworks ist subviews
nicht KVO-kompatibel .
Wenn Sie entweder die Unteransicht oder die Superansicht steuern, können Sie Änderungen an der Ansichtshierarchie durch Unterklassen und Überschreiben beobachten:
In der Superview müssen Sie überschreiben ...
%Vor%... oder, wenn Sie die Unteransicht steuern, würden Sie überschreiben ...
%Vor%Beide Methoden werden aufgerufen, bevor die Ansicht entfernt wird.
Sie können die Eigenschaft sublayers
von CALayer, die KVO-kompatibel ist, anstelle von UIView subviews
beobachten.
Tags und Links objective-c ios uiview key-value-observing subview