tableView(_:didSelectRowAt:) не вызывается в GMSMapView

Я работаю над приложением iOS/Swift 4.0, в котором я создал UITableView, скажем, tableView на GMSMapView, скажем, mapView. Первоначально tableView не был виден, а после установки tableView.layer.zPosition = 2 он отображался перед mapView. Но жесты не принимаются tableView, а принимаются mapView.

Например, когда я пытаюсь прокрутить tableView, фон mapView перемещается/прокручивается, а tableView нет. Также tableView(_:didSelectRowAt:) не вызывается, когда я выбираю ячейку. Я дважды проверил, что datasource и delegate правильно назначены и не меняются при перезагрузке.

Что я пробовал:

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

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


person Sazzad Hissain Khan    schedule 29.05.2018    source источник


Ответы (2)


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

view.insertSubview(tableView, above: mapView);

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

person Eimantas    schedule 29.05.2018

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

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