2015-04-28 80 views
0

我已經創建了一個XIB自定義的UIView,我這顯示,當用戶通過實施markerInfoWindow無法接收來自markerInfoWindow的UIView觸摸事件在GMSMapView中

- (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; 
} 

一切正常標記上水龍頭,我的廈門國際銀行是顯示並填寫標題。

我的問題是我無法獲得自定義UIView,TESTInfoWindow來響應觸摸事件。 (我希望用戶能夠拖動自定義信息窗口和應用程序將響應基礎上,touchesEnd事件。)

我實現的touchesBegan和touchesMoved在TESTInfoWindow既不被調用:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"DEBUG touchesBegan"); 
} 

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
     NSLog(@"DEBUG touchesMoved"); 
} 

我認爲GMSMapView正在接收自定義信息窗口視圖忽略的觸摸。

如何讓我的自定義UIView接收觸摸?任何幫助讚賞。

回答

0

我只是從這個鏈接Adding Click Event on InfoWindow/Marker in Google Maps SDK for native iOS/objective C

1.conform到GMSMapViewDelegate協議爲您複製的答案。

@interface YourViewController() <GMSMapViewDelegate> 
// your properties 
@end 

2.設置您的mapView_委託。

mapView_.delegate = self; 

3.implement的GMSMapViewDelegate方法

- (void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(GMSMarker *)marker { 
     // your code 
     NSNumber *number = [marker.userData objectForKey:@"marker_id"]; 
    } 

順便說一句,marker.userData是有用的。你可以設置你需要的數據到它,並用它在- mapView:didTapInfoWindowOfMarker:

例如,對於用戶數據集對象GMSMarker上

GMSMarker *marker = [[GMSMarker alloc] init]; 
marker.userData = @{@"marker_id":[NSNumber numberWithInt:12]};