【发布时间】:2014-04-09 11:07:39
【问题描述】:
这让我发疯了!
所以,我有自定义图钉,您可以在地图上拖动它们,效果很好。因为我希望它们像标准的苹果针 (animatesDrop) 一样进行动画处理,所以我使用以下事件来跟踪正在发生的事情。
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)annotationView didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState
当用户完成拖动图钉时,我需要显示一个标注说保存/取消。我启动了以下方法,出现了 MKPinAnnotationView(以前是 UIView),但按钮不起作用。
- 我已经尝试在代码中完成这一切,但没有成功。
- 我尝试在视图上捕获触摸事件,但没有成功。
- 我已确保保留视图 (selectedPin)
- 我已尝试将视图添加到超级视图(在帖子上看到)
- 我已确定 userInteractionEnabled 已开启
- 我将视图设置为控制器,我很确定这不起作用 要么
我吃了很多糖:(
- (void)createYuhuCalloutWithAnnotationView:(MKAnnotationView *)view
{
MapAnnotation *mapAnnotation = (MapAnnotation *)view.annotation;
MapYuhuCallout *calloutView = (MapYuhuCallout *)[[[NSBundle mainBundle] loadNibNamed:@"MapYuhuCallout" owner:self options:nil] objectAtIndex:0];
CGRect calloutViewFrame = calloutView.frame;
calloutViewFrame.origin = CGPointMake(-calloutViewFrame.size.width/2 + 10, -calloutViewFrame.size.height);
calloutView.frame = calloutViewFrame;
[calloutView.saveButton addTarget:self
action:@selector(saveYuhuChanges)
forControlEvents:UIControlEventTouchUpInside];
[calloutView.cancelButton addTarget:self
action:@selector(cancelYuhuChanges)
forControlEvents:UIControlEventTouchUpInside];
calloutView.leftCalloutAccessoryView = calloutView.saveButton;
calloutView.rightCalloutAccessoryView = calloutView.cancelButton;
calloutView.userInteractionEnabled = YES;
view.userInteractionEnabled = YES;
[view addSubview:calloutView];
mapAnnotation.yuhuCalloutView = calloutView;
self.currentCalloutView = calloutView;
self.selectedPin = mapAnnotation;
}
更新
我相信我知道为什么会这样,但我不确定如何解决它。 我正在将 UIView 添加到 AnnotationView (PIN)。 UIView 比 pin 大很多,所以它的框架更大。只有穿过图钉的 UIView 部分是可点击的。我希望 ClipToBounds 隐藏 UIView。
所以,我似乎需要在实际地图中添加一个 UIView 以便它可以点击或使 AnnotationView (PIN) 框架更大,这会导致其他问题。
【问题讨论】:
-
MKAnnotationView 是您的自定义类继承的抽象类,您是否重写了 leftCalloutAccessoryView 方法并使用它返回视图?
-
你有榜样吗?我认为我不需要覆盖课堂上的任何内容
-
对不起不是atm,你能描述一下按钮不起作用的意思吗?你的意思是 addTarget 不火?还是按钮不显示?
-
addTarget 未触发,未检测到触摸检测,是因为它作为子视图添加到图钉而不是地图?
标签: ios uibutton mapkit mkannotation mkannotationview