Swiftui Photospicker реагирует только на длинную прессуIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Swiftui Photospicker реагирует только на длинную прессу

Сообщение Anonymous »

Beiftui Beginner здесь. Фотоспикер встроен в представление, представленное с помощью перехода на навигации Zoom (из моего герового). Я подозреваю, что обработка жестов, связанная с навигационным переходом, может мешать поведению по умолчанию по умолчанию. Я попытался использовать такие модификаторы, как. Allowshittesting (True) и добавление высокого уровня для печати консольного сообщения при нажатии, но ни один подход не решал проблему. Хотя я вижу, что TAP распознается (консоль печатает сообщение), пользовательский интерфейс Photospicker только надежно появляется в длинном прессе. « жест: затворный затвор системного жеста », когда я использую длинное пресс. Будет ли очень признательен о том, может ли переход увеличения навигации. Buspageview внедряет Photopickerview, который имеет жест Tap, который регистрирует сообщение. Однажды, я снова новичок, поэтому я могу не хватать что -то очевидное. Если кто -то сталкивался с этой проблемой ранее или имеет какое -либо представление о том, является ли система жестов Swiftui - или еще одну основную проблему - заставляет фотоспетью реагировать только на длинные прессы, а не быстрые краны, я бы очень признателен за ваши руководства или предложения. Заранее спасибо за вашу помощь! < /P>
import SwiftUI
import PhotosUI
import SwiftData

// Dummy Model Definitions
@Model
class Bus {
var id: UUID = UUID()
var date: Date = Date()
//More stuff
var images: [BusImage] = []
}

@Model
class BusImage {
var id: UUID = UUID()
var data: Data
var bus: Bus?

init(data: Data, bus: Bus? = nil) {
self.data = data
self.bus = bus
}
}

struct HeroView: View {
let bus: Bus
@Binding var selectedBus: Bus?
@Namespace private var ns

var body: some View {
NavigationLink(destination: CreateReportDetailsView(bus: bus, selectedBus: $selectedBus)
.navigationTransition(.zoom(sourceID: bus, in: ns))) {
Text("Create Report")
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(8)
}
.simultaneousGesture(TapGesture().onEnded {
print("HeroView tap recognized.")
})
}
}

// CreateReportDetailsView that contains a TabView and a PhotoPickerView.
struct CreateReportDetailsView: View {
let bus: Bus
@Binding var selectedBus: Bus?
@State private var selectedTabIndex: Int = 0

var body: some View {
VStack {
TabView(selection: $selectedTabIndex) {
BusPageView(bus: bus)
.tag(0)
Text("page")
.tag(1)
}
.tabViewStyle(.page)
}
.navigationTitle(selectedTabIndex == 0 ? "Bus Info" : "Issues")
}
}

// BusInfoPageView that embeds my PhotoPickerView.
struct BusPageView: View {
let bus: Bus
@State private var photosPickerItems: [PhotosPickerItem] = []

var body: some View {
VStack {
// Other Bus info content here...
PhotoPickerView(photosPickerItems: $photosPickerItems, bus: $bus)
.padding()
}
}
}

// PhotoPickerView with a high-priority tap gesture.
struct PhotoPickerView: View {
@Binding var photosPickerItems: [PhotosPickerItem]
@Binding var bus: Bus
@Environment(\.modelContext) private var modelContext

var body: some View {
VStack {
PhotosPicker("Select Photos", selection: $photosPickerItems, maxSelectionCount: 2, selectionBehavior: .ordered)
.frame(width: 120, height: 120)
.buttonStyle(.borderless)
.background(Color(.systemFill))
.clipShape(RoundedRectangle(cornerRadius: 20))
.contentShape(RoundedRectangle(cornerRadius: 20))
.simultaneousGesture(
TapGesture().onEnded {
print("Tap gesture recognized on PhotosPicker")
}
)
}
.onChange(of: photosPickerItems) { _, _ in
Task {
for item in photosPickerItems {
if let data = try? await item.loadTransferable(type: Data.self) {
let newImage = BusImage(data: data, bus: bus)
bus.images.append(newImage)
}
}
photosPickerItems = []
do {
try modelContext.save()
} catch {
print("Error saving model: \(error.localizedDescription)")
}
}
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... long-press
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • SwiftUI: PhotosPicker не может загрузить передаваемое изображение
    Anonymous » » в форуме IOS
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Ограничьте выбираемые элементы PhotosPicker только альбомами (SwiftUI)
    Anonymous » » в форуме IOS
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Ограничьте выбираемые элементы PhotosPicker только альбомами (SwiftUI)
    Anonymous » » в форуме IOS
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • SwiftUI. Можно ли уменьшить выбор видео в PhotosPicker до вертикального?
    Гость » » в форуме IOS
    0 Ответы
    12 Просмотры
    Последнее сообщение Гость
  • PhotosPicker зависает на этапе загрузки (SwiftUI)
    Anonymous » » в форуме IOS
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»