开发者社区> 问答> 正文

关于高德地图自定义标注的气泡时,不能响应单击事件吗?

公司项目要用高德的ios sdk开发一些功能,
然后我自定义的气泡,想要在上面加个button,但是点击button 时整个气泡都消失了,点击气泡的任何地方都是如此,是把这个事件都过滤掉了吧?
怎么样才能让气泡响应单击事件?

展开
收起
爵霸 2016-03-13 08:31:01 6360 0
1 条回答
写回答
取消 提交回答
  • 还是把我的解决方法贴上来吧,希望对有需要的人有帮助。

    (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id)annotation { } 因为自定义的气泡是添加到大头针上的,而大头针的size只有下面很小一部分,所以calloutView是在大头针的外面的。 而 iOS 按钮超过父视图范围是无法响应事件的处理方法。所以就要重写hittest方法。
    
    在CustomAnnotationView.m中重写hittest方法:
    (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { UIView *view = [super hitTest:point withEvent:event]; if (view == nil) { CGPoint tempoint = [self.calloutView.navBtn convertPoint:point fromView:self]; if (CGRectContainsPoint(self.calloutView.navBtn.bounds, tempoint)) { view = self.calloutView.navBtn; } } return view; }

    这里的self.calloutView.navBtn 就是你需要点击的按钮

    2019-07-17 19:01:36
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载