我试图理解 iOS 中的关键值观察,但我认为我没有正确地做某事。作为一个想法,我尝试将观察者添加到视图控制器的属性(与 IBOutlet 连接的视图)。这个视图(tableIndicator)是动画的,所以我想看看我是否可以让观察者在视图的框架发生变化时做出反应。
所以我在视图控制器的 viewDidLoad 中做了以下操作:
[tableInidicator addObserver:self forKeyPath:@"frame" options:0 context:nil];
tableIndicator
是我的视图/类属性,我将视图控制器(self)添加为观察者,默认选项为 0,帧作为被观察的键值。
然后,我等着看这个函数是否随着帧的变化而被触发:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
NSLog(@"value changed");
}
...但什么也没有发生。
我不一定要修复此代码,因为它除了让我理解它之外没有任何用途,如果有人能指出我做错了什么,我将不胜感激。一些好的例子/教程也会很棒。
我找到的那些(http://iphonedevelopment.blogspot.ro/2009/02/kvo-and-iphone-sdk.html / http://nachbaur.com/blog/back-to-basics-using-kvo)不包括此类情况。他们只是应用于一个类以观察其属性之一的观察者,而不是类中(自定义)对象的属性,我认为这对我更有用。
先感谢您
[编辑]对于那些会错过我对已接受答案的评论的人:
更改视图的中心显然不会触发 frame 属性的观察者。您必须更改框架本身。