gpt4 book ai didi

ios - 防止在点击 MKAnnotation 时检测到 MKMapView 上的触摸事件

转载 作者:可可西里 更新时间:2023-11-01 06:09:51 25 4
gpt4 key购买 nike

我有一个 UITapGestureRecognizer,当用户点击 map 时,它会在我的 MKMap 上隐藏和显示工具栏 - 简单。

但是,当用户点击 MKMapAnnotation 时,我不希望 map 以正常方式响应点击(如上)。此外,当用户点击 map 上的其他位置以取消选择 MKAnnotation 标注时,我也不希望工具栏响应。因此,工具栏应该只在当前没有处于选中状态的 MKAnnotations 时响应。当用户直接点击注释时,它也不应该响应。

到目前为止,我一直在尝试对 map 上的点击手势使用react的以下操作 - 但是从未检测到注释 View (第一个 if 语句),而且无论使用这种方法,注释 View 都会启动。

 -(void)mapViewTapped:(UITapGestureRecognizer *)tgr
{
CGPoint p = [tgr locationInView:self.mapView];

UIView *v = [self.mapView hitTest:p withEvent:nil];

id<MKAnnotation> ann = nil;

if ([v isKindOfClass:[MKAnnotationView class]])<---- THIS CONDITION IS NEVER MET BUT ANNOTATIONS ARE SELECTED ANYWAY
{
//annotation view was tapped, select it…
ann = ((AircraftAnnotationView *)v).annotation;
[self.mapView selectAnnotation:ann animated:YES];
}
else
{

//annotation view was not tapped, deselect if some ann is selected...
if (self.mapView.selectedAnnotations.count != 0)
{
ann = [self.mapView.selectedAnnotations objectAtIndex:0];
[self.mapView deselectAnnotation:ann animated:YES];
}

// If no annotation view is selected currently then assume control of
// the navigation bar.
else{

[self showToolBar:self.navigationController.toolbar.hidden];
}
}
}

我需要以编程方式控制注释调用的启动,并检测点击事件何时命中注释以实现此目的。

如有任何帮助,我们将不胜感激。

最佳答案

我认为您会发现以下链接非常有用:

http://blog.asynchrony.com/2010/09/building-custom-map-annotation-callouts-part-2/

How do I make a MKAnnotationView touch sensitive?

第一个链接讨论(除其他事项外)如何防止触摸传播到注释以便它们有选择地响应,第二个链接讨论如何检测触摸。

关于ios - 防止在点击 MKAnnotation 时检测到 MKMapView 上的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19692098/

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