通过KVO观察MKMapView的区域?

时间:2010-12-06 19:51:37

标签: ios mkmapview key-value-observing

我有一个对象,想知道MKMapView的区域何时被更改。但是,此对象不是地图视图的委托。我正在尝试以下内容,其中map是MKMapView:

[map addObserver:self forKeyPath:@"region" options:0 context:nil];

但是,observeValueForKeyPath:ofObject:change:context:未被回拨。

作为一个临时解决方案,我有地图的委托,让地图区域被更改后让其他对象知道,但我想将两个对象解耦,因为它们并不真正相关。

1 个答案:

答案 0 :(得分:9)

在Cocoa(Touch)中,框架对象的属性仅保证符合KVO 如果文档说明-[MKMapView region]的文档没有提出此类声明,因此您不应该尝试使用KVO。即使它碰巧工作,你也无法保证完全合规或继续成功。

相反,您必须使用委托方法并从那里发送其他对象的消息。可能您的代表可以广播NSNotification以实现与KVO类似的效果。