mapView:regionDidChangeAnimated:从不调用

时间:2013-10-11 12:26:52

标签: ios objective-c mkmapview

在故事板中,我有一个与视图控制器关联的导航控制器。

视图控制器包含MKMapView。

View Controller也在Identity Inspector中设置 - >自定义类,是一个自定义控制器: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通过“引用Outlets”链接到放置在故事板上的ViewController中的MKMapView,我已经在.m文件的代码中使用它来设置注释或获取“bounds.origin”。< / p>

每次用户移动地图时,我都需要运行一些行来更新地图。 所以,我试图在.m文件中实现mapView:regionDidChangeAnimated:但是从不调用它。

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
    NSLog(@"Region changed");
}

我尝试创建一个MKMapView的自定义子类,在该类上实现该方法,但也没有调用。 (你仍然可以在.h文件的导入中看到,MainMapView.h ...我还没有删除导入)

有什么我想念的吗?我是否必须在地图和当前类之间设置更多连接?

否则,每次地图移动时我是否有另一种触发事件的方式?

1 个答案:

答案 0 :(得分:5)

当没有调用委托方法时,首先要检查的是对象的delegate属性是否已设置或已连接。

(声明一个类在.h文件中实现委托协议是不一样的 - 只是让编译器知道应该对类代码实现的期望,以便它可以提供编译时警告。)< / p>

因此,除了引用插座之外,还必须将地图视图的委托插座连接到文件所有者或在代码中(通常在viewDidLoad中)执行mapView.delegate = self;

相关问题