`
zani
  • 浏览: 355115 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

MKMapView响应touch事件

阅读更多

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px 'Lucida Grande'; color: #929292}

TapDetectingWindow.h

//
//  plist>
 
//  NBFisheryiPad
//
//  Created by shiqyn on 11-6-16.
//  Copyright 2011 Stongsoft. All rights reserved.
//

#import <Foundation/Foundation.h>


@protocol TapDetectingWindowDelegate<NSObject>
- (void)userDidTapObserveView:(id)tapPoint;
@end
@interface TapDetectingWindow : UIWindow {
    UIView *viewToObserve;
    id <TapDetectingWindowDelegate> controllerThatObserves;
}
@property (nonatomic, retain) UIView* viewToObserve;
@property (nonatomic, assign) id <TapDetectingWindowDelegate> controllerThatObserves;
@end

 

 TapDetectingWindow.m

//
//  plist>
 
//  NBFisheryiPad
//
//  Created by shiqyn on 11-6-16.
//  Copyright 2011 Stongsoft. All rights reserved.
//

#import "TapDetectingWindow.h"


@implementation TapDetectingWindow
@synthesize viewToObserve;
@synthesize controllerThatObserves;
- (id)initWithViewToObserver:(UIView *)view andDelegate:(id)delegate {
    if(self == [super init]) {
        self.viewToObserve = view;
        self.controllerThatObserves = delegate;
    }
    return self;
}
- (void)dealloc {
    [viewToObserve release];
    [super dealloc];
}
- (void)forwardTap:(id)touch 
{ 
    [controllerThatObserves userDidTapObserveView:touch];
}
- (void)sendEvent:(UIEvent *)event 
{
    [super sendEvent:event];
    if (viewToObserve == nil || controllerThatObserves == nil)
        return;
    NSSet *touches = [event allTouches];
    if (touches.count != 1)
        return;
    UITouch *touch = touches.anyObject;
    if (touch.phase != UITouchPhaseEnded)
        return;
    if ([touch.view isDescendantOfView:viewToObserve] == NO)
        return;
    CGPoint tapPoint = [touch locationInView:viewToObserve];
    
    NSArray *pointArray = [NSArray arrayWithObjects:[NSString stringWithFormat:@"%f", tapPoint.x],
						   [NSString stringWithFormat:@"%f", tapPoint.y], nil];
    if (touch.tapCount == 1) 
	{
        [self performSelector:@selector(forwardTap:)   withObject:pointArray afterDelay:0];
	}
	else if (touch.tapCount > 1)
	{
		[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(forwardTap:)   object:pointArray];
	}
}
@end


 

用法:

1.双击MainWindow.xib, 弹出的Window,按control+2,弹出的window attributes窗口中 将class identity设置成TapDetectingwindow.

 

2.在要使用TapDetectingwindow类中添加如下代码:

	TapDetectingWindow* tapDetectWindow = ((TapDetectingWindow *)[[UIApplication sharedApplication].windows objectAtIndex:0]);
	tapDetectWindow.viewToObserve = mapView;
	tapDetectWindow.controllerThatObserves = self;

  并实现delegate:

#pragma mark TapDetectingWindowDelegate
- (void)userDidTapObserveView:(id)tapPoint
{
	DLog(@">>>userDidTapObserveView");
	[self hideSearchRangeSlider];
}
 
 
分享到:
评论

相关推荐

    iPhone MKMAPView画路径

    在创建`MKMapView`实例时,通常会设置其代理,以便接收地图事件并定制行为。 要实现“iPhone MKMapView中根据GPS坐标画路径”,我们需要以下步骤: 1. **数据准备**:首先,你需要收集一系列的GPS坐标点,这些点...

    MKMapView自定义calloutView

    在iOS开发中,`MKMapView`是苹果提供的地图视图组件,用于展示地图信息和位置。`CalloutView`则是`MKMapView`中一个重要的特性,通常用来显示用户点击地图上的Annotation(标注)时出现的提示信息。默认情况下,`...

    MKMapView 同时显示多气泡

    2. **手势识别**:为了在地图上添加多个气泡,我们需要监听用户的触摸事件。可以通过给`MKMapView`添加`UITapGestureRecognizer`来实现。当用户点击地图时,我们可以判断点击位置是否与某个标注相关,然后相应地显示...

    MKMAPVIEW上长按屏幕,添加大头针

    在iOS开发中,`MKMapView`是苹果提供的一个强大的地图视图组件,它允许开发者集成Apple Maps到自己的应用中,展示地理位置信息,并进行各种交互操作。本篇文章将深入讲解如何在`MKMapView`上实现长按屏幕添加大头针...

    TSClusterMapView, 用于iOS和OSX的动画集群 MKMapView.zip

    TSClusterMapView, 用于iOS和OSX的动画集群 MKMapView TSClusterMapView - 带集群的MKMapView动画注释集群MKMapView子类基于 ADClusterMapView 。用法要运行示例项目,克隆 repo,然后从示例目录中运行 pod install ...

    FlyoverKit:在 MKMapView 上实现 360° 俯视图.zip

    这可能涉及计算平滑的路径、速度控制以及与用户交互的响应性。 5. **数据源和地图覆盖物**:为了提供360°的视角,FlyoverKit 可能需要处理来自 Apple Maps 服务的高分辨率卫星图像和其他地理数据,同时支持自定义...

    IOS MKMapView

    MKMapView在中国显示地图和卫星图存在位置上的偏差,因此很多时侯在定位跟踪的时候常常是卫星定位而标准地图显示,因此常发现位置点不居中显示,当然这个可以使用开启用户位置跟踪模式来进行定位。本DEMO也正是利用...

    MTDirectionsKit, 在MKMapView之上,直接显示方向.zip

    MTDirectionsKit, 在MKMapView之上,直接显示方向 为什么 MTDirectionsKit?为什么苹果没有为你提供直接显示在MKMapView之上的方法,强迫你在中 switch,只是为了引导你的用户在某个地方。 我们也是这样,所以我们...

    swift-在一个MKMapView上360°展示一个高架公路

    此外,为了使体验更加逼真,还可以考虑加入光照效果、阴影以及与真实世界的交互,例如当用户靠近某一点时,显示相关信息或者触发特定事件。这可以通过SceneKit的物理引擎和碰撞检测来实现。 在SvenTiigi-FlyoverKit...

    MKMapView_Memory_Leak_Demo

    在iOS开发中,地图服务是常见且重要的功能之一,苹果提供的`MKMapView`类使得集成地图变得简单。然而,开发者可能会遇到一些棘手的问题,比如内存泄漏。标题为“MKMapView_Memory_Leak_Demo”的示例着重讨论了在使用...

    ios-系统地图MKMapView的定位及导航 UISearchController模糊查询.zip

    系统地图MKMapView的定位及导航 UISearchController模糊查询点击每个UITableViewCell 在地图上显示大头针 ,点击大头针的右边到这里去,调用系统导航,模糊查询数据源来自百度api 写的有点简单,有点乱

    GPS定位MKMapView,CoreLocation

    标题提到的"GPS定位MKMapView,CoreLocation"涉及到两个主要的Apple框架:MapKit(MKMapView)和CoreLocation。接下来,我们将深入探讨这两个框架以及在iOS 8.0及更高版本中使用它们时可能遇到的问题和配置。 首先,...

    mkmapview官网示例

    `MKMapView`是苹果提供的一款强大的地图组件,用于在iOS应用中显示地图,并提供了丰富的自定义选项。本示例主要围绕`MKMapView`,通过`mkoverlay`和`mkpolyline`来讲解如何在地图上绘制路线图。 `MKMapView`是iOS ...

    MKMapView选择地址和导航(iPhone源代码)

     在 MKMapView 中实现地址选择和导航功能。具有以下特点: 1:支持ios5~7 2:自定义MKAnnotationView 3:支持第三方导航功能、包括高德、百度、苹果、谷歌,以及绘制路线,类似微信发生地址 4:支持滑动地图,选择...

    在 MKMapview 上实现 CustomCallouts

    这个类扩展了`MKAnnotationView`,并在其中添加了自定义视图和手势识别器,以便于响应用户的触摸事件。项目中的示例代码展示了如何在地图上添加标注并使用自定义callout。 总之,通过学习和理解DXCustomCallout-...

    kingpin, 在MKMapView的地图注释集群库中,.zip

    kingpin, 在MKMapView的地图注释集群库中, kingpin一种面向iOS的MKAnnotation集群库。 特性使用 2-d 树,以实现最大性能。无需子类化,使库易于与现有项目集成。安装 CocoaPods要在 Podfile 中获得稳定的发行版,请...

    ios 坐标系转化(各种坐标系互转)

    从 MKMapView 取出来的经纬度去 Google Maps API 做逆地址解析终于对了。去百度地图API做逆地址解析,依旧是错的! 从上面两处取的经纬度放到百度地图上显示都是错的!错的!的! 分为 地球坐标,火星坐标(iOS...

    map MKPinAnnotationView自定义(地点标记自定义)

    你还可以通过监听`MKMapView`的`didSelectAnnotationView`和`didDeselectAnnotationView`代理方法来实现选中和未选中时的动画效果,或者添加自定义的点击事件。 7. **性能优化** 为了提高性能,可以使用`...

    RxMKMapView:RxMKMapView是MKMapView`delegate`的RxSwift包装器

    RxMKMapView是MKMapView(MapKit) delegate的包装器,提供了React式委托代理以及可绑定的注释接口,以动态更改地图的“数据源”。 安装 RxMKMapView可通过。 要安装它,只需将以下行添加到您的Podfile中: pod ...

    Capital-Cities:MKMapView,MKAnnotation,MKPinAnnotationView,CLLocationCoordinate2D

    `MKMapView`是Apple提供的一个类,用于在iOS应用中展示地图,它支持多种地图服务,包括卫星视图、标准地图和混合视图。本篇文章将深入讲解`MKMapView`以及与其紧密相关的`MKAnnotation`、`MKPinAnnotationView`和`...

Global site tag (gtag.js) - Google Analytics