2016-07-19 10 views
2

Mapbox iOS SDK에서 MGLMapView를 사용하여 매우 기본적인 것을 달성하려고합니다. 나는 스크롤이 가능한 MGLMapView를 렌더링하여 팬 제스쳐에서 뷰를 움직일 수 있도록했습니다. 보기가 이동 되었기 때문에이보기에 팬 제스처 인식기를 연결했는지 감지하고 싶습니다.팬 제스처가 Mapbox에 전달하지 않습니다. MGLMapView

아래의 스크린 샷에서 볼 수 있듯이 인터페이스 작성기를 사용하고 있습니다.

interface builder screenshot

나는 참으로 언제 트리거 한지도에서보기를 이동하려고하는 IBAction를에 제스처 인식기를 연결. 그러나보기가 이동되지 않습니다. 즉 터치 이벤트가 더 이상 MGLMapView로 전달되지 않습니다. 물론 나는 팬 제스처 recoginzer의 'View inuches in view'옵션을 선택하지 않았다. 팬 제스처 인식기를 내 코드의 IBOublet에 연결 했으므로 멤버 cancelsTouchesInView를 false로 설정할 수 있지만 아무 것도 변경하지 않습니다.

비슷한 방식으로 탭 제스처 인식기 (2 회 터치)를 추가하려고했는데 제대로 작동합니다. 즉 연결된 IBAction이 트리거되고 터치가지도보기로 전달됩니다 (지도보기가 두 번 탭으로 확대됨).

팬 제스처 인식기로 무엇을 놓쳤습니까?

도움을 주셔서 감사합니다.

답변

0

그래서 나는 원하는 것을 얻기 위해 다른 접근 방식을 사용했습니다. 새로운 팬 제스처 인식기를지도보기에 연결하는 대신 기존의 팬 제스처 인식기에 새 대상을 연결합니다.

for gestureRecognizer in self.mapView.gestureRecognizers! { 
    if let _ = gestureRecognizer as? UIPanGestureRecognizer { 
     gestureRecognizer.addTarget(self, action: #selector(self.panOnMap)) 
     break 
    } 
} 

그러면 기본 패닝과 내 메서드 panOnMap이 호출됩니다.

해킹처럼 보이기 때문에이 솔루션을 아직 완전히 만족하지 못했습니다. 또한지도보기에 부착 된 두 개의 제스처 인식기 인 것으로 나타 났으며 어떤 대상을 사용해야하는지 잘 모르겠습니다.