gpt4 book ai didi

iphone - 保持两个 MKMapView 显示同一区域

转载 作者:行者123 更新时间:2023-12-03 20:16:13 25 4
gpt4 key购买 nike

在我的 iPad 应用程序上,我有 2 个彼此相邻且尺寸相同的 map View 。我希望这些始终显示相同的区域。我现在使用 RegionDidChangeAnimated: 委托(delegate)方法实现了这一点。

这并不总是那么有效(有时缩放后区域会有所不同),并且用户移动其中一张 map 和另一张 map 之间存在滞后。

是否有一种好方法可以在两个 map 上复制触摸,以便当用户在一个 map 上平移和缩放时,它会自动同时在另一张 map 上执行相同的操作?

我研究的一件事是创建一个 UITouch 对象,其位置值与正在移动的 map 中创建的对象具有相同的位置值,但这并不是一个很好的解决方案。

有没有办法将一个 UIView 上的一组触摸复制到另一个 UIView(因为 MKMapView 是一个 UIView)?

谢谢,罗斯

最佳答案

您可以使用 UIGestureRecognizer 在用户操作其中一张 map 时帮助保持 map 更加同步。

例如,使用 UIPanGestureRecognizer,手势识别器操作处理程序将在用户平移 map 时多次触发 - 与仅在平移 map 时触发的 regionDidChangeAnimated 不同已完成。

您需要向一个或两个 map 添加手势识别器并实现自定义手势处理程序方法。还要实现 shouldRecognizeSimultaneouslyWithGestureRecognizer 委托(delegate)方法并返回 YES,以便您的手势处理程序可以与 map 一起工作。

示例:

//add the gesture handler to map(s)...
UIPanGestureRecognizer *pgr = [[UIPanGestureRecognizer alloc]
initWithTarget:self action:@selector(gestureHandler:)];
pgr.delegate = self;
[mapViewA addGestureRecognizer:pgr];
[pgr release];

//...

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:
(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}

- (void)gestureHandler:(UIGestureRecognizer *)gestureRecognizer
{
[mapViewB setRegion:mapViewA.region animated:NO];
}

如果您想向两个 map 添加手势识别器,则需要为每个 map 创建一个单独的实例(即,您不能向两个 map 添加 pgr)。您可能还需要添加 UIPinchGestureRecognizerUITapGestureRecognizer。不过,您可以对所有识别器使用相同的处理程序方法。

我仍然会实现 regionDidChangeAnimated 以防错过手势。

关于iphone - 保持两个 MKMapView 显示同一区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5922422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com