3
我正在使用下面的代碼在mapView中添加按鈕,但按鈕單擊事件僅適用於左側大小,它不適用於右側。單擊事件在地圖視圖中無法正常工作
MKPinAnnotationView *pinAnnotation = nil;
if(annotation != beerMapView.userLocation)
{
static NSString *defaultPinID = @"myPin";
pinAnnotation.pinColor = MKPinAnnotationColorRed;
pinAnnotation = (MKPinAnnotationView *)[beerMapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if (pinAnnotation == nil)
pinAnnotation = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];
NSLog(@"PinAnnotation: %@",NSStringFromCGRect(pinAnnotation.frame));
pinAnnotation.canShowCallout = YES;
pinAnnotation.image = [UIImage imageNamed:@""]; //Set blank pin image
UIImageView *pinImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 40, 40)];
pinImage.image = [UIImage imageNamed:@"ic_pin.png"];
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[infoButton setImage:[UIImage imageNamed:@"ic_pin.png"] forState:UIControlStateNormal];
infoButton.frame = CGRectMake(0, 0, 40, 40);
pinAnnotation.rightCalloutAccessoryView = infoButton;
[infoButton addTarget:self action:@selector(detailBtnClk:) forControlEvents:UIControlEventTouchUpInside];
[pinAnnotation addSubview:infoButton];
}
infoButton - >左側部分(0到20)按鈕單擊事件工作。 (Call detailBtnClk)
infoButton - >右側部分(21至40)按鈕點擊事件不起作用。 (不能撥打detailBtnClk)
任何幫助表示讚賞。
你想要達到什麼樣的功能和UI?爲什麼代碼創建MKPinAnnotationView,然後將圖像設置爲空白(而不是創建普通的MKAnnotationView並設置其圖像)?這裏工作的「左邊部分」究竟是什麼?爲什麼將infoButton設置爲rightCalloutAccessoryView _and_作爲子視圖添加到註釋視圖本身?什麼在這裏被認爲是「正確的部分」呢?點擊註釋時是否會彈出標註?順便說一下,當視圖被重用時,代碼再次(再次)向視圖添加infoButton。 – Anna
@AnnaKarenina:我的按鈕寬度爲40,所以左邊部分包含0 yo 20,右邊部分包含21至40.我試圖設置星形圖像而不是針形圖像。在我的代碼中,pinAnnotation.image用於空白圖像。 –
嘗試設置註釋視圖本身的框架(pinAnnotation.frame),使其至少與按鈕框一樣大。針視圖的默認框架寬度小於40.同時考慮改進代碼的其他註釋。 – Anna