Ios 如何在MapView注释中将右侧访问器的边框调整到右上角?
我想在右上角添加右访问器图像(交叉图像),如下图所示,但无法获取其代码: 我使用下面的代码,但它没有给我我需要的。我需要在下面的图片所示的地方交叉按钮Ios 如何在MapView注释中将右侧访问器的边框调整到右上角?,ios,xcode,map,mkmapview,mkpinannotationview,Ios,Xcode,Map,Mkmapview,Mkpinannotationview,我想在右上角添加右访问器图像(交叉图像),如下图所示,但无法获取其代码: 我使用下面的代码,但它没有给我我需要的。我需要在下面的图片所示的地方交叉按钮 annView.leftCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeContactAdd]; UIImage *listImage = [UIImage imageNamed:@"Close_normal.png"]; UIButton *l
annView.leftCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeContactAdd];
UIImage *listImage = [UIImage imageNamed:@"Close_normal.png"];
UIButton *listButton = [UIButton buttonWithType:UIButtonTypeCustom];
// get the image size and apply it to the button frame
// listButton.frame = CGRectMake(0,0,56,68);
CGRect listButtonFrame = listButton.frame;
listButtonFrame.size = listImage.size;
listButton.frame = listButtonFrame;
[listButton setImage:listImage forState:UIControlStateNormal];
annView.rightCalloutAccessoryView = listButton;
然后我还要做的是,当我点击十字按钮时,它会关闭信息弹出窗口并删除注释
- (void) mapView:(MKMapView *)mv annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
if( // left accessor is clicked then execute this code) // what should i write here
{
SiteAnnotation *site = (SiteAnnotation *)view.annotation;
if(site.category == -1) {
if(addressAnnotation) {
[mapView removeAnnotation:addressAnnotation];
AddViewController *vc = [[[AddViewController alloc] initWithCoordinate:addressAnnotation.coordinate] autorelease];
[self.delegate pushViewController:vc animated:YES];
}
}
else {
[self showSiteDetails:site.identifier];
}
}
else if (// if right accessor cross image is clicked)
{
// Then here the code to dismiss the pop up and annotation pin on map
}
}
您可以检查以下代码: 在上面的方法和控制标记中使用标记,使该标记在下面工作
annView.leftCalloutAccessoryView.tag=1;
annView.rightCalloutAccessoryView.tag=2;
- (void) mapView:(MKMapView *)mv annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
SiteAnnotation *site = (SiteAnnotation *)view.annotation;
// Left Accessory Button Tapped
if(site.category == -1) {
if ([control tag] == 1) {
if(addressAnnotation) {
so on...
}
下一次尝试
else if ([control tag] == 2) {
// "Right Accessory Button Tapped
UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:@"" message:@"Touch and hold the pin icon to drag it around." delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Done", nil];
[alert1 show];
[alert1 release];
}
然后在方法上
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
UIAlertView *alert_pin = [[UIAlertView alloc] initWithTitle:@"" message:@"cancel button click it " delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Done", nil];
[alert_pin show];
[alert_pin release];
[mapView removeAnnotation:addressAnnotation];
[addressAnnotation release];
addressAnnotation = nil;
}
使用警报并要求用户解除警报,或者不使用仅调用上的直接解除按钮 您可以检查以下代码: 在上面的方法和控制标记中使用标记,使该标记在下面工作
annView.leftCalloutAccessoryView.tag=1;
annView.rightCalloutAccessoryView.tag=2;
- (void) mapView:(MKMapView *)mv annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
SiteAnnotation *site = (SiteAnnotation *)view.annotation;
// Left Accessory Button Tapped
if(site.category == -1) {
if ([control tag] == 1) {
if(addressAnnotation) {
so on...
}
下一次尝试
else if ([control tag] == 2) {
// "Right Accessory Button Tapped
UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:@"" message:@"Touch and hold the pin icon to drag it around." delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Done", nil];
[alert1 show];
[alert1 release];
}
然后在方法上
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
UIAlertView *alert_pin = [[UIAlertView alloc] initWithTitle:@"" message:@"cancel button click it " delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Done", nil];
[alert_pin show];
[alert_pin release];
[mapView removeAnnotation:addressAnnotation];
[addressAnnotation release];
addressAnnotation = nil;
}
使用警报并要求用户解除警报,或者不使用仅调用上的直接解除按钮