tableView(_:didSelectRowAt:) не вызывается в GMSMapView
Я работаю над iOS/Swift 4.0
приложение, в котором я создал UITableView
Скажем, TableView на GMSMapView
Скажем, mapView. Изначально tableView не было видно и после установки tableView.layer.zPosition = 2
, это было видно перед mapView. Но жесты не принимаются tableView, а получены mapView.
Например, когда я пытаюсь прокрутить tableView, backgroundView map перемещается / прокручивается, а tableView - нет. Также tableView(_:didSelectRowAt:)
не вызывается при выборе ячейки. Я дважды проверил datasource
а также delegate
правильно назначен и не изменяется при перезагрузке.
Вещи, которые я пробовал:
- Я отключил все жесты на mapView, когда tableView активен (скрытый на основе
searchBar
состояние) с помощьюself.mapView.settings.setAllGesturesEnabled(true)
- Я включил TableViews,
isScrollEnabled
,isUserInteractionEnabled
,allowsSelection
свойства есть - Я установил клетки
selectionStyle
в.default
,isUserInteractionEnabled
к истине
Все еще не могу решить проблему, любой шаг, который я пропускаю?
2 ответа
Проблема была в другой стороне, и я предлагаю всем посмотреть ниже шаги
- Удостоверься что
tableView
находится перед mapView, если он был создан в xcode статически - Убедитесь, что
tableView
выдвигается с помощьюself.view.bringSubview(toFront: tableView)
если он создан программно - Убедитесь, что размер контейнера tableView полностью покрывает полный размер внутреннего tableView
- Включены tableViews,
isScrollEnabled, isUserInteractionEnabled, allowsSelection
свойства
Перемещение слоя вверх не означает, что вы перемещаете весь вид вверх. Попробуйте это вместо этого:
view.insertSubview(tableView, above: mapView);
Учитывая tableView(_:didSelectRowAt:)
проверьте, есть ли у вас delegate
набор свойств для UITableView
или в коде или в XIB / раскадровке.