Почему в VisionOS нет поддержки взаимодействия с аннотациями MapKit? ⇐ IOS
Почему в VisionOS нет поддержки взаимодействия с аннотациями MapKit?
Я пытаюсь адаптировать свое текущее готовое приложение для iOS/iPadOS 17 к VisionOS и пытаюсь запустить его напрямую для целевой платформы Apple Vision Pro (разработано для iPad).
У меня есть нижний лист, на котором можно отобразить детали элементов карты, нажав на аннотации к карте. Нижний лист открывается правильно с помощью обычного действия кнопки, но не открывается с помощью аннотации, которая обертывает действие кнопки. Оно появляется, как и ожидалось, на iOS/iPadOS, но на VisionOS — нет.
struct SomeAnnotation: Идентифицируемый, Хэшируемый { пусть идентификатор: UUID пусть заголовок: Строка? пусть координата: CLLocationCoordinate2D пусть текст: строка func hash(into hasher: inout Hasher) { hasher.combine (идентификатор) } static func == (слева: SomeAnnotation, справа: SomeAnnotation) -> Bool { вернуть lhs.id == rhs.id } } структура ContentView: Просмотр { @State var позиция: MapCameraPosition = .automatic @State var выбрано: SomeAnnotation? @State Private var planBottomSheet: Bool = false пусть аннотации: [SomeAnnotation] = [ Какая-тоАннотация( идентификатор: UUID(), заголовок: "Место 1", координата: CLLocationCoordinate2D( широта: 43,64191952505181, долгота: -79.38918661813415 ), text: "Текст 1" ), Какая-тоАннотация( идентификатор: UUID(), заголовок: "Место 2", координата: CLLocationCoordinate2D( широта: 43,64083254041681, долгота: -79.3859357809321 ), text: "Текст 2" ) ] var body: some View { Карта(позиция: $позиция) { ForEach(annotations, id: \.self) {результат Аннотация(result.title!, координата: result.coordinate) { Кнопка (действие: { выбрано = (выбрано == результат? ноль: результат) }) { Изображение (имя системы: «bolt.car.circle.fill») .изменяемый размер() .foregroundStyle(.red) .frame(ширина: 36, высота: 36) .фон(.белый) .clipShape(.круг) } } } } .sheet(isPresented: $planBottomSheet) { SomeView(bottomSheet: $planBottomSheet) // просто для примера } } } структура SomeView: Посмотреть { @Binding var BottomSheet: Bool var body: some View { ВСтек { Text("Это какой-то вид") } } } #Предварительный просмотр { КонтентПросмотр() } Но это работает для следующего действия кнопки, как и ожидалось, и для воспроизведения проблемы и просмотра следующего действия кнопки кода работает, вы скопируете/вставляете код ниже в верхнюю часть тела;
varroutePlannerButton: some View { Кнопка (действие: { планБоттомлист = правда если mapViewModel.planDetentCondition { MapViewModel.planBottomSheetDetent = .large } еще { MapViewModel.planBottomSheetDetent = .medium } }) { Изображение (имя системы: "point.bottomleft.forward.to.arrowtriangle.uturn.scurvepath.fill") .изменяемый размер() .aspectRatio(contentMode: .fit) .frame(ширина: 20, высота: 20) .padding() } .sheet(isPresented: $planBottomSheet) { МаршрутПланнерВью( planBottomSheetDetent: $mapViewModel.planBottomSheetDetent, планБоттомлист: $planBottomSheet, isNavigating: $isNavigating, showDetails: $showingRouteDetails ) .presentationDetents( [mapViewModel.planBottomSheetDetent, .large, .medium], выбор: $mapViewModel.planBottomSheetDetent ) .presentationContentInteraction(.resizes) .presentationBackgroundInteraction(.enabled(upThrough: .medium)) .presentationDragIndicator(.visible) } }
Я пытаюсь адаптировать свое текущее готовое приложение для iOS/iPadOS 17 к VisionOS и пытаюсь запустить его напрямую для целевой платформы Apple Vision Pro (разработано для iPad).
У меня есть нижний лист, на котором можно отобразить детали элементов карты, нажав на аннотации к карте. Нижний лист открывается правильно с помощью обычного действия кнопки, но не открывается с помощью аннотации, которая обертывает действие кнопки. Оно появляется, как и ожидалось, на iOS/iPadOS, но на VisionOS — нет.
struct SomeAnnotation: Идентифицируемый, Хэшируемый { пусть идентификатор: UUID пусть заголовок: Строка? пусть координата: CLLocationCoordinate2D пусть текст: строка func hash(into hasher: inout Hasher) { hasher.combine (идентификатор) } static func == (слева: SomeAnnotation, справа: SomeAnnotation) -> Bool { вернуть lhs.id == rhs.id } } структура ContentView: Просмотр { @State var позиция: MapCameraPosition = .automatic @State var выбрано: SomeAnnotation? @State Private var planBottomSheet: Bool = false пусть аннотации: [SomeAnnotation] = [ Какая-тоАннотация( идентификатор: UUID(), заголовок: "Место 1", координата: CLLocationCoordinate2D( широта: 43,64191952505181, долгота: -79.38918661813415 ), text: "Текст 1" ), Какая-тоАннотация( идентификатор: UUID(), заголовок: "Место 2", координата: CLLocationCoordinate2D( широта: 43,64083254041681, долгота: -79.3859357809321 ), text: "Текст 2" ) ] var body: some View { Карта(позиция: $позиция) { ForEach(annotations, id: \.self) {результат Аннотация(result.title!, координата: result.coordinate) { Кнопка (действие: { выбрано = (выбрано == результат? ноль: результат) }) { Изображение (имя системы: «bolt.car.circle.fill») .изменяемый размер() .foregroundStyle(.red) .frame(ширина: 36, высота: 36) .фон(.белый) .clipShape(.круг) } } } } .sheet(isPresented: $planBottomSheet) { SomeView(bottomSheet: $planBottomSheet) // просто для примера } } } структура SomeView: Посмотреть { @Binding var BottomSheet: Bool var body: some View { ВСтек { Text("Это какой-то вид") } } } #Предварительный просмотр { КонтентПросмотр() } Но это работает для следующего действия кнопки, как и ожидалось, и для воспроизведения проблемы и просмотра следующего действия кнопки кода работает, вы скопируете/вставляете код ниже в верхнюю часть тела;
varroutePlannerButton: some View { Кнопка (действие: { планБоттомлист = правда если mapViewModel.planDetentCondition { MapViewModel.planBottomSheetDetent = .large } еще { MapViewModel.planBottomSheetDetent = .medium } }) { Изображение (имя системы: "point.bottomleft.forward.to.arrowtriangle.uturn.scurvepath.fill") .изменяемый размер() .aspectRatio(contentMode: .fit) .frame(ширина: 20, высота: 20) .padding() } .sheet(isPresented: $planBottomSheet) { МаршрутПланнерВью( planBottomSheetDetent: $mapViewModel.planBottomSheetDetent, планБоттомлист: $planBottomSheet, isNavigating: $isNavigating, showDetails: $showingRouteDetails ) .presentationDetents( [mapViewModel.planBottomSheetDetent, .large, .medium], выбор: $mapViewModel.planBottomSheetDetent ) .presentationContentInteraction(.resizes) .presentationBackgroundInteraction(.enabled(upThrough: .medium)) .presentationDragIndicator(.visible) } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение