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 правильно назначен и не изменяется при перезагрузке.

Вещи, которые я пробовал:

  1. Я отключил все жесты на mapView, когда tableView активен (скрытый на основе searchBar состояние) с помощью self.mapView.settings.setAllGesturesEnabled(true)
  2. Я включил TableViews, isScrollEnabled, isUserInteractionEnabled, allowsSelection свойства есть
  3. Я установил клетки selectionStyle в .default, isUserInteractionEnabled к истине

Все еще не могу решить проблему, любой шаг, который я пропускаю?

2 ответа

Решение

Проблема была в другой стороне, и я предлагаю всем посмотреть ниже шаги

  1. Удостоверься что tableView находится перед mapView, если он был создан в xcode статически
  2. Убедитесь, что tableView выдвигается с помощью self.view.bringSubview(toFront: tableView) если он создан программно
  3. Убедитесь, что размер контейнера tableView полностью покрывает полный размер внутреннего tableView
  4. Включены tableViews, isScrollEnabled, isUserInteractionEnabled, allowsSelection свойства

Перемещение слоя вверх не означает, что вы перемещаете весь вид вверх. Попробуйте это вместо этого:

view.insertSubview(tableView, above: mapView);

Учитывая tableView(_:didSelectRowAt:) проверьте, есть ли у вас delegate набор свойств для UITableView или в коде или в XIB / раскадровке.

Другие вопросы по тегам