作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图捕获MKMapView
上的tap事件,这样我可以在用户点击的位置放一个MKPinAnnotation
。基本上,我的 map 上覆盖了MKOverlayViews
(显示建筑物的覆盖层),当用户点击该覆盖层时,我想通过放下MKPinAnnotaion
并在标注中显示更多信息来向其提供有关该覆盖层的更多信息。
谢谢。
最佳答案
您可以使用UIGestureRecognizer
来检测 map View 上的触摸。
但是,我建议不要双击,而要双击(UITapGestureRecognizer
)或长按(UILongPressGestureRecognizer
)。单击可能会干扰用户尝试单击图钉或标注本身的情况。
在设置 map View 的地方(例如,在viewDidLoad
中),将手势识别器附加到 map View :
UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleGesture:)];
tgr.numberOfTapsRequired = 2;
tgr.numberOfTouchesRequired = 1;
[mapView addGestureRecognizer:tgr];
[tgr release];
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleGesture:)];
lpgr.minimumPressDuration = 2.0; //user must press for 2 seconds
[mapView addGestureRecognizer:lpgr];
[lpgr release];
handleGesture:
方法中:
- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer
{
if (gestureRecognizer.state != UIGestureRecognizerStateEnded)
return;
CGPoint touchPoint = [gestureRecognizer locationInView:mapView];
CLLocationCoordinate2D touchMapCoordinate =
[mapView convertPoint:touchPoint toCoordinateFromView:mapView];
MKPointAnnotation *pa = [[MKPointAnnotation alloc] init];
pa.coordinate = touchMapCoordinate;
pa.title = @"Hello";
[mapView addAnnotation:pa];
[pa release];
}
关于ios4 - 如何在MKMapView上捕获轻击手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4317810/
我是一名优秀的程序员,十分优秀!