【问题标题】:Observing the region of MKMapView via KVO?通过 KVO 观察 MKMapView 的区域?
【发布时间】:2010-12-06 19:51:36
【问题描述】:

我有一个对象想知道 MKMapView 的区域何时更改。然而,这个对象不是地图视图的代表。我正在尝试以下方法,其中map 是 MKMapView:

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

但是,observeValueForKeyPath:ofObject:change:context: 没有被回调。

作为一个临时解决方案,我让地图的委托让这个其他对象知道地图区域何时发生变化,但我想解耦这两个对象,因为它们并不真正相关。

【问题讨论】:

    标签: ios mkmapview key-value-observing


    【解决方案1】:

    在 Cocoa (Touch) 中,框架对象的属性只保证符合 KVO如果文档有说明-[MKMapView region] 的文档没有这样的声明,所以你不应该尝试在它上面使用 KVO。即使它碰巧奏效了,您也无法保证完全合规或持续成功。

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

    【讨论】:

    • 正如 Mike Abdullah 所说,使用 NSNotification 可能是您想要做的最好的选择。这将使您的对象保持解耦。
    • 太糟糕了 KVO 不工作。如果您正在继承 MKMapView 并希望接收区域更改通知以更新 UI,这将非常有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 2012-01-16
    • 2019-02-12
    相关资源
    最近更新 更多