2016-12-30 5 views
1

Я пытаюсь работать с Google Map с некоторым UIView. Мое требование: если я коснусь MapView, один из UIView исчезнет (анимируется), и он останется исчезнут, пока я не отпущу Touch от MapView. Мне удалось исчезнуть UIView с экрана на касания MapView, используя код ниже:Событие Touch end в GoogleMap iOS Swift

func mapView(_ mapView: GMSMapView, didLongPressAt 
coordinate: CLLocationCoordinate2D) { 
self.animate() 
} 

func mapView(_ mapView: GMSMapView, 
idleAt position: GMSCameraPosition) { 
self.collapse() 
} 

func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) { 
// 
} 

func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) { 

На перетаскивание карты и выпуска {Touch -> Drag -> Подъемник} можно обнаружить палец Lift с помощью idleAt. Но я ничего не мог обнаружить, если я {Touch -> hold -> Lift}. Вы можете рассмотреть Uber или Ola приложение MapView, например

ответ

4

Вы можете использовать GoogleMaps GMSMapViewDelegate:

mapView.delegate = self 

Это будет вызывать, когда карта Google начнет двигаться и в режиме ожидания.

func mapView(_ mapView: GMSMapView, willMove gesture: Bool) { 
// 
} 

// Touch drag and lift 
func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) { 
// 
} 

// Touch and lift 
func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) { 
    print("yes") 
} 
+0

Это не имеет касанийЕдинственное событие, чтобы обнаружить, когда палец снят с экрана, чтобы я мог вернуть свой UIView. –

+0

«idleAt» будет вызывать после того, как палец поднят на экран. Мы разработали приложение. Подобно Uber, в этом мы используем «idleAt» для обнаружения касанийEnd. –

+0

Спасибо, idleAt вызывается при поднятии пальца. Он вызывается только тогда, когда я {Touch -> Drag -> Lift} .. не в случае {Touch -> Lift}. Мне нужно, чтобы это вызывалось в обоих случаях. –