Я работаю над зрителем Visionos Media, который отображает как фотографии, так и видео. Для видео я использую AvPlayerViewController, и скихиваюсь влево/справа, отлично работает с перетаскиванием Swiftui на контейнере. Для фотографий я использую qlpreviewcontroller, завернутый в UiviewControllerRepresentable, но проблема в том, что QuickLook перехватывает все жесты - так что мой внешний схваток никогда не работает. Я уже пробовал обычные подходы, такие как использование методов делегирования QlpreviewController (DidupDateContentsOF), добавление UisWipegesturereCognizer непосредственно к представлению контроллера и позволяя одновременно распознавание жестов, но никто из них не работал. Моя цель состоит в том, чтобы иметь постоянную навигацию по навигации как на фотографиях, так и на видео (слева/право на перемещение между предметами для медиа), но в настоящее время проводки работают только на видео. Кто -нибудь столкнулся с этим на Visionos, и есть ли способ заставить жесты смахивания работать над QuickLook? < /P>
import SwiftUI
import QuickLook
struct ContentView: View {
@State private var currentIndex = 0
@State private var imageURLs: = []
var body: some View {
ZStack {
i ... n-visionos
Свигай жесты, заблокированные qlpreviewcontroller в Visionos ⇐ IOS
Программируем под IOS
-
Anonymous
1758663700
Anonymous
Я работаю над зрителем Visionos Media, который отображает как фотографии, так и видео. Для видео я использую AvPlayerViewController, и скихиваюсь влево/справа, отлично работает с перетаскиванием Swiftui на контейнере. Для фотографий я использую qlpreviewcontroller, завернутый в UiviewControllerRepresentable, но проблема в том, что QuickLook перехватывает все жесты - так что мой внешний схваток никогда не работает. Я уже пробовал обычные подходы, такие как использование методов делегирования QlpreviewController (DidupDateContentsOF), добавление UisWipegesturereCognizer непосредственно к представлению контроллера и позволяя одновременно распознавание жестов, но никто из них не работал. Моя цель состоит в том, чтобы иметь постоянную навигацию по навигации как на фотографиях, так и на видео (слева/право на перемещение между предметами для медиа), но в настоящее время проводки работают только на видео. Кто -нибудь столкнулся с этим на Visionos, и есть ли способ заставить жесты смахивания работать над QuickLook? < /P>
import SwiftUI
import QuickLook
struct ContentView: View {
@State private var currentIndex = 0
@State private var imageURLs: [URL] = []
var body: some View {
ZStack {
if !imageURLs.isEmpty {
// QuickLook View
QuickLookView(urls: imageURLs, currentIndex: $currentIndex)
.allowsHitTesting(false) // Disable QuickLook's own gestures
}
}
.highPriorityGesture(
DragGesture(minimumDistance: 30)
.onChanged { value in
print("Drag detected: \(value.translation.width)")
}
.onEnded { value in
let horizontalMovement = value.translation.width
let swipeThreshold: CGFloat = 50
if abs(horizontalMovement) > swipeThreshold {
if horizontalMovement > 0 {
// Swipe right - previous
if currentIndex > 0 {
currentIndex -= 1
print("Previous: \(currentIndex)")
}
} else {
// Swipe left - next
if currentIndex < imageURLs.count - 1 {
currentIndex += 1
print("Next: \(currentIndex)")
}
}
}
}
)
.onAppear {
loadSampleImages()
}
}
private func loadSampleImages() {
// Load sample images from bundle
if let url1 = Bundle.main.url(forResource: "image1", withExtension: "jpg"),
let url2 = Bundle.main.url(forResource: "image2", withExtension: "jpg") {
imageURLs = [url1, url2]
}
}
}
struct QuickLookView: UIViewControllerRepresentable {
let urls: [URL]
@Binding var currentIndex: Int
func makeUIViewController(context: Context) -> QLPreviewController {
let controller = QLPreviewController()
controller.dataSource = context.coordinator
controller.delegate = context.coordinator
controller.currentPreviewItemIndex = currentIndex
controller.view.backgroundColor = .clear
// Disable user interaction on QuickLook
controller.view.isUserInteractionEnabled = false
return controller
}
func updateUIViewController(_ uiViewController: QLPreviewController, context:
Context) {
if uiViewController.currentPreviewItemIndex != currentIndex {
uiViewController.currentPreviewItemIndex = currentIndex
}
// Ensure interaction remains disabled
uiViewController.view.isUserInteractionEnabled = false
}
func makeCoordinator() -> Coordinator {
Coordinator(parent: self)
}
class Coordinator: NSObject, QLPreviewControllerDataSource,
QLPreviewControllerDelegate {
let parent: QuickLookView
init(parent: QuickLookView) {
self.parent = parent
}
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
return parent.urls.count
}
func previewController(_ controller: QLPreviewController, previewItemAt
index: Int) -> QLPreviewItem {
return parent.urls[index] as NSURL
}
}
}
< /code>
Я пробовал: < /p>
Использование. Allowshittesting (false) на QuickLook < /li>
Настройка контроллера. Просмотры < /li>
< /ul>
Ожидаемое поведение: перевод влево /справа должно вызвать жест перетаскивания и изменить
currentIndex для перемещения между изображениями.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79773097/swipe-gestures-blocked-by-qlpreviewcontroller-in-visionos[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия