我已经使用XIB创建了一个自定义UIView,当用户通过实现markerInfoWindow来点击标记时,我会显示它
- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker
{
TESTInfoWindow *view = [[[NSBundle mainBundle] loadNibNamed:@"TESTInfoWindow" owner:self options:nil] objectAtIndex:0];
view.lblTitle.text = [marker title];
return view;
}
一切正常,显示我的XIB并填充标题。
我的问题是我无法获得自定义UIView,TESTInfoWindow来响应触摸事件。 (我希望用户能够拖动自定义信息窗口,应用程序将根据touchesEnd事件做出响应。)
我在TESTInfoWindow中实现了touchesBegan和touchesMoved,但都没有被调用:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"DEBUG touchesBegan");
}
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"DEBUG touchesMoved");
}
我认为GMSMapView正在接收自定义信息窗口视图忽略的触摸。
如何让我的自定义UIView接收触摸?任何帮助赞赏。
答案 0 :(得分:0)
我刚从这个链接Adding Click Event on InfoWindow/Marker in Google Maps SDK for native iOS/objective C
复制了你的答案1.符合GMSMapViewDelegate协议。
@interface YourViewController () <GMSMapViewDelegate>
// your properties
@end
2.设置你的mapView_委托。
mapView_.delegate = self;
3.实现GMSMapViewDelegate方法
- (void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(GMSMarker *)marker {
// your code
NSNumber *number = [marker.userData objectForKey:@"marker_id"];
}
btw,marker.userData
很有用。您可以将所需数据设置到其中,并在- mapView:didTapInfoWindowOfMarker:
例如,在GMSMarker对象上设置userData
GMSMarker *marker = [[GMSMarker alloc] init];
marker.userData = @{@"marker_id":[NSNumber numberWithInt:12]};