【问题标题】:Skobbler SKMapView and UIPanGestureRecognizerSkobbler SKMapView 和 UIPanGestureRecognizer
【发布时间】:2025-12-05 22:10:01
【问题描述】:

我有一个关于 Skobbler MapView 和 UIPanGestureRecognizer 的问题。似乎UIPanGestureRecognizer 拦截了来自SKMapView 的所有平移事件并阻止移动地图位置。

您可以在下面看到代码示例,我的应用程序之间的唯一区别是 UIPanGestureRecognizer 位于父视图 2 层以上。

import UIKit

class IPSkobblerViewController : UIViewController {

    var mapView : SKMapView!;

    override func viewDidLoad() {
        mapView = SKMapView();
        mapView.exclusiveTouch = true;
        self.view.addSubview(mapView);

        let gestureRecogniser = UIPanGestureRecognizer(target: self, action: "panGesture");
        self.view.addGestureRecognizer(gestureRecogniser);

    }

    func panGesture() {
        NSLog("Pan Gesture");
    }

}

【问题讨论】:

  • 我们正在调查

标签: ios objective-c cocoa-touch swift skmaps


【解决方案1】:

首先要做的是将识别器的cancelsTouchesInView设置为false

gestureRecogniser.cancelsTouchesInView = false 

这将使手势识别器允许它附加到的视图接收触摸事件。如果该视图不是地图视图,则必须将触摸事件转发给它。

【讨论】:

  • 我遇到了同样的问题。我将地图嵌入到 UICollectionViewCell 中,因此集合视图的平移手势与地图的平移手势一起调用(这是当 cancelsTouchesInView 为 false 时)。我似乎找不到任何解决方法,因为没有参考 SKMapView 的任何手势。 SKMapView 上的平移手势应该只需要集合视图的手势失败。我还尝试在 UICollectionView 上 CancelContentTouches 但这使它不响应任何触摸(当然),这不是我想要的。将感谢反馈。谢谢!
【解决方案2】:

它将在 3.0.2 版本中修复。

【讨论】: