- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我的 map 上有一个自定义 MKOverlayView,我想检测触摸。但是,我似乎无法让叠加层做出响应。我希望它会像忘记将 userInteractionEnabled 设置为 YES 一样愚蠢......但是,唉,运气不好
....目前,我是这样的:
//map delegate overlay:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
if (_radiusView !=nil) {
[_radiusView removeFromSuperview];
[_radiusView release];
_radiusView = nil;
}
_radiusView = [[CustomRadiusView alloc]initWithCircle:overlay];
_radiusView.userInteractionEnabled = YES;
_radiusView.strokeColor = [UIColor blueColor];
_radiusView.fillColor = [UIColor grayColor];
_radiusView.lineWidth = 1.0;
_radiusView.alpha = 0;
//fade in radius view
[UIView beginAnimations:@"fadeInRadius" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.6];
_radiusView.alpha = .3;
[UIView commitAnimations];
return _radiusView;
}
我的自定义覆盖类简单地实现了 touchesBegan,并扩展了 MKCircleView
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"touch!");
}
最佳答案
首先,向您的 MKMapView 添加一个手势识别器(注意:这是假设 ARC):
[myMapView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(mapTapped:)]];
在识别器操作中,您可以通过如下方式确定点击点是否在 View 中:
- (void)mapTapped:(UITapGestureRecognizer *)recognizer
{
MKMapView *mapView = (MKMapView *)recognizer.view;
id<MKOverlay> tappedOverlay = nil;
for (id<MKOverlay> overlay in mapView.overlays)
{
MKOverlayView *view = [mapView viewForOverlay:overlay];
if (view)
{
// Get view frame rect in the mapView's coordinate system
CGRect viewFrameInMapView = [view.superview convertRect:view.frame toView:mapView];
// Get touch point in the mapView's coordinate system
CGPoint point = [recognizer locationInView:mapView];
// Check if the touch is within the view bounds
if (CGRectContainsPoint(viewFrameInMapView, point))
{
tappedOverlay = overlay;
break;
}
}
}
NSLog(@"Tapped view: %@", [mapView viewForOverlay:tappedOverlay]);
}
关于ios - MKOverlayView 和触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3472461/
我在这里遇到了几个类似的问题,关于获得具有良好性能的动画 MKOverlayView 工作属性(例如,动画雷达覆盖)。然而,虽然答案帮助我朝着正确的方向前进,但我仍然没有完全掌握我所缺少的东西。 我一
我想用混合模式绘制 map 叠加层。但是这段代码只是在没有任何混合模式的情况下绘制白色叠加层。我做错了什么? - (void)drawMapRect:(MKMapRect)mapRect zoomSc
我有一个路线叠加层要放置在 map 上。我必须调整它的旋转,使其与底层 map View 完全重叠。我怎样才能做到这一点?我找到了旋转的角度。如何旋转叠加 View ?到目前为止,我已经添加了叠加层,
我的 map 上有一个自定义 MKOverlayView,我想检测触摸。但是,我似乎无法让叠加层做出响应。我希望它会像忘记将 userInteractionEnabled 设置为 YES 一样愚蠢..
我目前有一个 UIView,它使用 OpenGL 在 MKMapView 之上绘制雷达数据。由于雷达图像的细节水平,需要 OpenGL(CoreGraphics 不够快)。 我正在绘制的所有图像都保存
在我的 MKOverlayView 中,我在绘制传递给 drawMapRect:mapRect:zoomScale:inContext 的 MKMapRect 之外的区域时遇到问题派生类。我试图为集合
我有一个自定义的 MKOverlay 和 MKOverlayView。创建 MKOverlayView 后,我可以设置 View 的 alpha: -(void)drawMapRect:(MKMapR
我有一个自定义的 MKOverlayView,它绘制了一条简单的线。在 drawMapRect: 中,我正在设置 CGContextSetLineWidth(context, 30); 完全放大时看起
我正在尝试使用以下代码为 iOS 5 中的 MapKit 覆盖 View (特别是 MKCircleView)的 alpha 值设置动画: -(void) animateCircle:(MKCircl
更新: 使用 MKOverlayView 投影到 MKMapView 的图像使用 Mercator projection ,而我用作输入数据的图像使用 WGS84 投影。有没有一种方法可以将输入图像转
我有一个 MKOverlayView,它将动画雷达数据显示为一系列图像。我遇到的问题是雷达图像被 MapKit 切割成图 block 。为了交换图像,我有一个定时器调用一个更新函数,该函数在我的叠加层
我使用以下代码在 iPad 上进行了测试。 如果我像下面的代码一样添加 MyOverlay,即使在 drawMapRect 中什么都不做,默认 map 图 block 的 MKMapView 加载也会
我正在开发一个高度基于 map 的应用程序,并且我正在使用 MBXMapKit 框架(基于 MapKit 构建)以便在我的 MapView 中显示自定义 Mapbox map 图 block 而不是默
map 叠加层的新手,但这是一个非常奇怪的问题。 我将 mapView.visibleMapRect 传递到我的覆盖实现并将其作为 boundingMapRect 返回,目前这很好 - 只是尝试在整个
我有一个涉及大量 MKOverlayView 的应用程序。每次将一个添加到 map 时,它也会添加到一个 NSArray 中。当用户希望停止添加覆盖时,我希望他们能够保存它们,并在以后能够访问它们。如
我在 map 上有一个叠加层,我想更改其坐标。为了无缝地做到这一点,我将调用 setNeedsDisplayInMapRect:对 View 进行更改后的方法。 我已经通过更改 fillColor 测
当有多个叠加层添加到 map 时,自定义 MKOverlayView 和标准 MKPolygonView 在某些缩放级别被裁剪时遇到问题。 The overlay of Algeria at two
我想用 png 制作 mapkit 叠加层,但我没有代码,也找不到任何教程。我是新手编码员,非常感谢您的帮助! 谢谢 最佳答案 您需要做一些事情才能做到这一点: 创建自定义 MKOverlayView
在向我的 map View 添加叠加层时,我收到以下警告: Sending 'MKOverlayView *const __strong' to parameter of incompatible t
我是一名优秀的程序员,十分优秀!