Наложение просмотров, но распространение ввода вниз до самого низкого z-индекса - PullRequest
0 голосов
/ 30 сентября 2019

Используя SwiftUI, я хочу создать вид, где пользователь может выбрать регион на карте. Для этого я хочу использовать MapKit и нарисовать слегка непрозрачный красный кружок над которым указывает текущую область. В зависимости от уровня масштабирования область становится больше или меньше.

У меня уже есть следующий код (MapView взят из этого шпаргалки https://github.com/SimpleBoilerplates/SwiftUI-Cheat-Sheet#navigation):

import MapKit

struct MapView: UIViewRepresentable {
    func makeUIView(context: Context) -> MKMapView {
        MKMapView(frame: .zero)
    }

    func updateUIView(_ view: MKMapView, context: Context) {
        let coordinate = CLLocationCoordinate2D(
            latitude: 34.011286,
            longitude: -116.166868
        )
        let span = MKCoordinateSpan(latitudeDelta: 2.0, longitudeDelta: 2.0)
        let region = MKCoordinateRegion(center: coordinate, span: span)
        view.setRegion(region, animated: true)
    }
}

struct LocationSelectionView: View {
    var body: some View {
        MapView()
            .overlay(
                Circle()
                    .fill(Color.init(red: 1.0, green: 0.0, blue: 0.0, opacity: 0.3))
                    .frame(width: 300, height: 300)
            )
    }
} 

, что приводит к следующему: enter image description here

Теперь проблема состоит в том, что прокрутка вокруг карты больше не работает, если я нахожусь в красном круге, потому что вход направлен вкруг, но не распространяется вниз к фактической карте. Все еще возможно прокручивать карту вне круга.

Как я могу передать жесты пользователей вниз в MapView, чтобы круг был просто фактическим,визуальное наложение без какой-либо функциональности?

1 Ответ

0 голосов
/ 30 сентября 2019

- Отключить Касание:

Установить .allowsHitTesting(false) на Circle

- Отключить Панорамирование:

Невозможно в SwiftUI (пока).

...