Imo-ishoralarni birlashtirish
SwiftUI imo-ishoralar: imo-ishoralarni birlashtirish
Imo-ishoralarni .simultaneousGesture yoki .highPriorityGesture yordamida birlashtiring va o‘zaro ta’sirlarni muvofiqlashtiring.
Sintaksis
Birlashtirish: birgalikda ishlashi uchun .simultaneousGesture() ni, bitta imo-ishoraga ustunlik berish uchun esa .highPriorityGesture() ni qo‘shing.
Bir vaqtda bosish + sudrash
Ikkala imo-ishora ham ishlaydi: bosishlar hisoblagichni oshiradi, sudrash esa rangni o‘zgartiradi.
Misol
import SwiftUI
struct ComposeSimultaneousDemo: View {
@State private var tapped = 0
@State private var dragged = false
var body: some View {
Rectangle()
.fill(dragged ? .orange : .purple)
.frame(height: 120)
.overlay(Text("taps: \(tapped)"))
.simultaneousGesture(TapGesture().onEnded { tapped += 1 })
.gesture(DragGesture().onChanged { _ in dragged = true }.onEnded { _ in dragged = false })
}
}
import SwiftUI
struct ContentView: View {
var body: some View { ComposeSimultaneousDemo() }
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
Yuqoridagi misolda bosish va sudrash imo-ishoralarining ikkalasi ham ishlaydi.
Sudrashning bosishdan ustunligi
Sudrash bosishdan ustun turadi: sudrash davomida bosishlar hisoblagichni oshirmaydi.
Misol
import SwiftUI
struct ComposePriorityDemo: View {
@State private var tapped = 0
@State private var dragging = false
var body: some View {
Rectangle()
.fill(dragging ? .orange : .purple)
.frame(height: 120)
.overlay(Text("taps: \(tapped)"))
.highPriorityGesture(DragGesture().onChanged { _ in dragging = true }.onEnded { _ in dragging = false })
.gesture(TapGesture().onEnded { if !dragging { tapped += 1 } })
}
}
import SwiftUI
struct ContentView: View {
var body: some View { ComposePriorityDemo() }
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
Yuqoridagi misolda sudrash imo-ishorasi bosish imo-ishorasidan ustun turadi.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
