【发布时间】:2011-03-18 23:04:54
【问题描述】:
我在 MKMapView 上方放置了一个 UIview,目的是在我跟踪用户位置时从地图视图中窃取两指平移。如果您注意到 Google 地图应用程序也在手机上执行此操作。
但是我不知道该怎么做。我希望能够根据是否正在跟踪位置来随意启用和禁用它。所有其他手势和触摸都应传递到地图视图
提前致谢。
【问题讨论】:
我在 MKMapView 上方放置了一个 UIview,目的是在我跟踪用户位置时从地图视图中窃取两指平移。如果您注意到 Google 地图应用程序也在手机上执行此操作。
但是我不知道该怎么做。我希望能够根据是否正在跟踪位置来随意启用和禁用它。所有其他手势和触摸都应传递到地图视图
提前致谢。
【问题讨论】:
假设您要使用 OS 4 及更高版本,简单的方法不是使用 UIView,而是直接在地图视图上添加手势识别器,例如:
UIPanGestureRecognizer* gest = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
[mapView addGestureRecognizer:gest];
...然后所有滑动手势(在这种情况下)将传递给 [self handlePanGesture:(UIPanGestureRecognizer*) x];
如果您查看有关手势识别器的文档,有多种选择,您可以将它们添加到非常精细的粒度级别(点击与滑动,使用多少手指等)
【讨论】:
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerPanGesture:)]; pan.minimumNumberOfTouches = 2; pan.maximumNumberOfTouches = 2; [map addGestureRecognizer:pan]; [pan release];