通过KVO观察MKMapView的区域?

Jam*_*s J 4 key-value-observing mkmapview ios

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

[map addObserver:self forKeyPath:@"region" options:0 context:nil];
Run Code Online (Sandbox Code Playgroud)

但是,observeValueForKeyPath:ofObject:change:context:没有被回电.

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

Mik*_*lah 9

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

相反,您必须使用委托方法并从那里发送其他对象的消息.可能你的代表可以播放一个NSNotification以达到与KVO类似的效果.