mapView:regionDidChangeAnimated: 从未调用
Posted
技术标签:
【中文标题】mapView:regionDidChangeAnimated: 从未调用【英文标题】:mapView:regionDidChangeAnimated: never called 【发布时间】:2013-10-11 12:26:51 【问题描述】:在故事板中,我有一个与视图控制器相关的导航控制器。
视图控制器包含一个 MKMapView。
View Controller 也在 Identity Inspector -> Custom Class 中设置为自定义控制器:MapViewController。
这是 MapViewController.h
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
#import "MarkerAnnotation.h"
#import "MarkerButton.h"
#import "MainMapView.h"
@interface MapViewController : UITableViewController <MKMapViewDelegate, CLLocationManagerDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *localMapView;
@end
localMapView 通过“引用插座”链接到故事板上 ViewController 中的 MKMapView,我已经在 .m 文件的代码中使用它来设置注释或获取“bounds.origin”。
每次用户移动地图时,我都需要运行一些行来更新地图。 因此,我尝试在 .m 文件上实现 mapView:regionDidChangeAnimated:,但从未调用过。
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
NSLog(@"Region changed");
我尝试创建 MKMapView 的自定义子类,在该类上实现该方法,但也没有被调用。 (你仍然可以在.h文件的导入中看到MainMapView.h...我仍然没有删除导入)
我有什么遗漏吗?我是否必须在地图和当前类之间设置更多连接?
否则,是否有另一种方法可以在每次地图移动时触发事件?
【问题讨论】:
除了引用出口,您是否还将地图视图的代理出口连接到文件所有者? 呃...不,我不这么认为^_^''我现在就试试 XD 酷,这很容易......现在自定义标记也出现了,我忘了它们。我开始在 ios 上开发才 10 天,这已经是我第二次犯这个错误了,希望我现在已经学会了 :) 非常感谢!如果您将其写为答案,我会确认;) 【参考方案1】:当没有调用委托方法时,首先要检查的是对象的delegate
属性是否已设置或已连接。
(在 .h 文件中声明一个类实现了委托协议不是一回事——它只是让编译器知道类代码实现的预期内容,以便它可以提供编译时警告。)
所以除了引用出口之外,您还必须将地图视图的代理出口连接到文件所有者或在代码中(通常在 viewDidLoad 中)执行mapView.delegate = self;
。
【讨论】:
以上是关于mapView:regionDidChangeAnimated: 从未调用的主要内容,如果未能解决你的问题,请参考以下文章