Ich versuche zu überwachen und auf den sich ändernden Wert des Ursprungs eines UIView-Frames zu reagieren. Mein Code:iOS: Hinzufügen von Beobachter zu einem frame.origin.y eines UIView?
[cell.bottomView addObserver:self forKeyPath:@"frame.origin" options:NSKeyValueObservingOptionNew context:NULL];
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"%@ Changed", keyPath);
}
Ich erhalte die folgende Fehlermeldung, die ich nicht verstehe:
An instance 0x7587d10 of class NSConcreteValue was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info:
<NSKeyValueObservationInfo 0x7587fd0> (
<NSKeyValueObservance 0x7587f70: Observer: 0x7587bd0, Key path: origin, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x7587ff0>
)
Wirklich, ich bin in der y-Position des Ursprungs nur interessiert, aber der Code wird nicht kompilieren, wenn ich keyPath auf "frame.origin.y" setze.
Wenn ich den SchlüsselPfad einfach auf "Frame" setzen, gibt es keine Fehler, aber die Methode observeValueForKeyPath wird nie aufgerufen. Ich nehme an, dass eine Änderung des Ursprungs eines Frames nicht als Änderung des Frames zählt.
Wie beende ich einen Beobachter zu einem frame.origin.y?
In Ihrem 'observerValueForKeyPath:' rufen Sie nicht super auf. – Andy