未调用Touchbegan方法

时间:2017-04-17 17:15:39

标签: ios objective-c google-maps-sdk-ios gmsmapview

touchesBegan方法没有在GMSmapview上调用。我希望在触摸或拖动地图时调用此方法。有人让我知道这段代码有什么问题

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view setUserInteractionEnabled:YES];
    _mapview.userInteractionEnabled=YES;
    _mapview.settings.consumesGesturesInView = false;
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches
           withEvent:(UIEvent *)event{

    NSLog(@"touchbegan started"); 
}

- (void)touchesMoved:(NSSet<UITouch *> *)touches
           withEvent:(UIEvent *)event{
    NSLog(@"touchesMoved started");
}

- (void)touchesEnded:(NSSet<UITouch *> *)touches
           withEvent:(UIEvent *)event{
    NSLog(@"touchesEnded started");
}

1 个答案:

答案 0 :(得分:1)

您也可以参考GMSMapViewDelegate Protocol Reference

要检测用户是否拖动了地图,我认为最好使用此方法

- (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture

并检查gesture参数是否为true

- (void) mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position 

如上所述,didChangeCameraPosition被多次调用,但由于它既可以通过代码设置地图中心来调用,也可以通过手势调用,但您无法真正看到仅在该方法上存在差异。

- (void) mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position 

在地图上的相机改变之前调用,或者由于手势,动画(例如,通过用户点击&#34;我的位置&#34;按钮)或通过相机明确更新或零图层上的长度动画。