2016-12-11 1 views
0

Mapbox MGLMapView에서 KCFloatingActionButton (또는 이와 비슷한 항목)을 구현하려고하지만 버튼 작업을 수행 할 수 없습니다. 버튼이 초기 터치를 인식하고 색상이 바뀌지 만 다른 현상은 발생하지 않습니다. 나는지도가 훔치고 있는지 또는 더 높은 우선 순위를 가지고 있는지 확실하지 않습니다.Mapbox에서 사용자 정의 컨트롤을 사용하는 방법

뷰 계층 구조를 검사하면 UIButton이 표시되고 관련 UIView가 맵 위에 있으므로 손실이 발생합니다. 나는 그것이 실제 UIButton 객체뿐만 아니라 버튼의 뷰를 사용했을지도 모른다고 생각했지만지도상의 간단한 UIView에 gestureRecognizer를 첨부 할 수있었습니다 (맵을 제외하고 뷰를 통해 드래그 및 탭을 등록 함).). 또한 바닐라 UIButton 개체를 잘 작동합니다.

EDIT : MKMapView로보기를 바꿨고 버튼이 정상적으로 작동합니다.

답변

0

그래서 매일 새로운 것을 배웁니다. 어제 였으면 좋겠어.

Superview에는 하위보기가 포함되어 있습니다. 내 경우 MGLMapView는 KCFloatingActionButton (UIView에서 파생 됨)을 포함합니다. 슈퍼 뷰에는 제스처 인식기가 부착되어 있습니다. 필자의 경우 mapView는 일반적으로지도와 연결된 일반적인 탭 및 스 와이프를 사용합니다. 기본 동작은 해당 제스처가 하위보기에 의해 차단되지 않도록하기위한 것이므로 버튼의 단순한 존재로 인해 슈퍼 뷰는 제스처를 인식하지 못합니다. UIGestureRecognizerDelegate을 채택하고 구현함으로써

: 내 '버튼'는 수퍼에서 파생 제스처를 처리하는 방법을 내가 선택적으로 처리 할 수 ​​

override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { 
    return false 
} 

. UIButtons는 단일 탭에 대해이 동작을 기본적으로 사용하지만 UIView 기반 단추는 기본적으로 읽지 않습니다.

관련 문제