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");
}
答案 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;按钮)或通过相机明确更新或零图层上的长度动画。