gpt4 book ai didi

ios - map 套件 : Custom callouts and adding buttons

转载 作者:行者123 更新时间:2023-12-01 18:14:54 24 4
gpt4 key购买 nike

这让我发疯!

所以,我有自定义图钉,你可以在 map 上拖动它,效果很好。因为我希望它们像标准的苹果针 (animatesDrop) 一样进行动画处理,所以我使用以下事件来跟踪正在发生的事情。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)annotationView didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState

当用户完成拖动图钉时,我需要显示一个标注说保存/取消。我启动了以下方法,出现了 MKPinAnnotationView(是 UIView),但按钮不起作用。
  • 我已经尝试在代码中完成这一切,但没有奏效。
  • 我尝试在 View 上捕获触摸事件,但没有成功。
  • 我已确保保留 View (selectedPin)
  • 我已经尝试将 View 添加到 super View (在帖子上看到)
  • 我已确定 userInteractionEnabled 位于
  • 我将 View 设为 Controller ,我很确定这不起作用
    要么

  • 我吃了很多糖:(
    - (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。

    因此,似乎我需要在实际 map 中添加一个 UIView 以便它可以点击或使 AnnotationView (PIN) 框架更大,这会导致其他问题。

    最佳答案

    我在这里对自定义标注 View 有很长的解释https://stackoverflow.com/a/19404994/1226370 .在您的情况下,最佳做法是将 View 添加为 calloutView 的 subview ,并且 calloutView 本身不可见。

    链接的答案中描述了有关触摸处理的所有详细信息。

    希望它会有用!

    关于ios - map 套件 : Custom callouts and adding buttons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22960661/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com