2012-01-03 58 views
2

我们正在开发基于地图的iPhone应用程序。我们需要在MapView上检测拖动和捏手势的开始。检测在iPhone上开始的捏手势MapView

我们能够使用regionWillChange委托方法检测拖动的开始。我们无法检测捏合手势的开始。

我们正在寻找一种检测捏手势开始的方法。 MapView有可能吗?

在此先感谢。

编辑: 我们尝试了下面的代码,但它没有奏效。

UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(checkpinch)]; 
[self.mapView addGestureRecognizer:pinch]; 
[pinch release]; 

双击手势识别器使用类似的代码在MapView上工作。

UITapGestureRecognizer *Tap= [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(checktap)]; 
[self.mapView addGestureRecognizer:Tap]; 
[Tap release]; 

回答

0

您可以参考苹果的示例代码:

http://developer.apple.com/library/ios/#samplecode/WorldCities/Introduction/Intro.html

的代码说明都拖上的MKMapView

放大操作
+0

感谢您的回答。我们参考了示例代码,但找不到如何处理捏和双击手势检测。 – Sunflower 2012-01-03 10:45:00

+0

要启用捏合手势检测,请确保zoomEnabled属性设置为YES。然后,您可以通过调用setRegion:animated:method来更改缩放级别。 – sahiti 2012-01-03 14:23:25

+0

我们已经使用zoomEnabled属性设置进行了检查。它仍然没有检测到捏手势的开始。 – Sunflower 2012-01-04 06:21:05

0

您可以添加手势识别您的MapView和线材达IBAction来处理特定的客人。 和在IBAction中,您可以检测特定客人的开始/结束。

示例:

- (IBAction)handlePanGuesture:(UIGestureRecognizer *)recogonizer { 
    if (recogonizer.state == UIGestureRecognizerStateBegan) { 
     // do stuff 
    } 
    } 
+0

感谢您的回复。我们尝试使用提供的委托方法。我们可以检测轻击手势,但无法使用它检测捏手势。我们尝试使用UITapRecognizer和UIPinchRecognizer – Sunflower 2012-01-03 10:47:05

+0

您可能想要发布代码供我们查看,根据文档状态将获得stateBegan调用的手势操作方法。 – 2012-01-03 16:12:43

4

完美而简单的解决方案。

先加UIGestureRecognizerDelegate你.h文件中 不是添加下面的两种方法在您.m文件

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    return YES; 
} 

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 

{ 
    return YES; 
} 

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 

{ 
    return YES; 
} 

化妆按照viewDidLoad中变化

[self.view insertSubview:mapView atIndex:0]; 

UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(yourmethod)]; 
[pinch setDelegate:self]; 
[pinch setDelaysTouchesBegan:YES]; 
[self.mapView addGestureRecognizer:pinch]; 
[pinch release]; 

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(youemethod)]; 
[tap setDelegate:self]; 
[self.mapView addGestureRecognizer:tap]; 
[tap release];