• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - AnnotationView 在 calloutVIew 上重叠

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:29:36 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 MapKit 在 map 上显示数据。为此,我使用自定义 AnnotationView 和自定义 CalloutView。但问题是,当我让 AnnotationView 相互关闭时,AnnotationView 在 CalloutView 上重叠。这是问题的截图。

overlapping annotationView

按钮也有问题,按钮的点击事件没有被调用。 calloutView 下方的 4 个按钮不会在点击时被调用。但是右上角代表编辑事件的按钮在点击时会被触发。

这是我的 CalloutView 代码。

@implementation CustomCalloutView

- (id)init {

        return self;
}
- (IBAction)btnEditActionUIButton *)sender {

    [self.delegate btnEditClicked];
}

- (IBAction)btnMailActionUIButton *)sender {

    [self.delegate btnMailClicked];
}

- (IBAction)btnMessageActionUIButton *)sender {

    [self.delegate btnMessageClicked];
}

- (IBAction)btnCallActionUIButton *)sender {

    [self.delegate btnCallClicked];

}

- (IBAction)btnStreetActionUIButton *)sender {

    [self.delegate btnStreetClicked];
}
- (IBAction)CalloutTapGestureClickedUITapGestureRecognizer*)sender {
    [self.delegate CalloutTApGesture:sender];
}
@end

请帮我解决这个问题...



Best Answer-推荐答案


这样做可以防止重叠(在顶部插入 callOut View )

 func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView)
 {

   print("clickedddddddd")

    if view.annotation is MKUserLocation
    {
        return
    }

        let customView = (Bundle.main.loadNibNamed("customSou", owner: self, options: nil))?[0] as! customSouOut;

        var calloutViewFrame = customView.frame;
        calloutViewFrame.origin = CGPoint(x:-calloutViewFrame.size.width/2 + 15,y: -calloutViewFrame.size.height);
        customView.frame = calloutViewFrame;


        view.addSubview(customView)


         // here you can fill any label or button with data according to it's pin 

         //

        for v in view.subviews
        {
            if v is customSouOut
            {
                continue
            }
            else
            {
                view.insertSubview(customView, aboveSubview: v)
            }
        }

    }

}

func mapView(_ mapView: MKMapView, didDeselect view: MKAnnotationView)
{
     print("oppspspspsps")

    if view.annotation is MKUserLocation
    {
        return
    }

     for v in view.subviews
    {
        if v is customSouOut 
        {
            v.removeFromSuperview()

            break
        }
    }




}

关于ios - AnnotationView 在 calloutVIew 上重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47912093/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap