LongPressGesture


ULASHISH

SwiftUI imo-ishoralar: LongPressGesture

State o‘zgarishlarini ishga tushirish uchun LongPressGesture yordamida uzoq bosib turishni aniqlang.


Sintaksis

Uzoq bosish ishlovchisi: .onLongPressGesture(minimumDuration: 0.5) { ... } yoki .onEnded bilan LongPressGesture(minimumDuration:).


Uzoq bosilganda almashtirish

Yorliqni "Hold me" va "Pressed" o‘rtasida almashtirish uchun 0,5 soniya bosib turing.

Misol

import SwiftUI

struct LongPressDemo: View {
  @State private var pressed = false
  var body: some View {
    Text(pressed ? "Pressed" : "Hold me")
      .padding(12)
      .background(.blue.opacity(0.1))
      .cornerRadius(8)
      .onLongPressGesture(minimumDuration: 0.5) { pressed.toggle() }
  }
}
import SwiftUI

struct ContentView: View {
  var body: some View { LongPressDemo() }
}
import SwiftUI

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup { ContentView() }
  }
}

Misolni ishga tushirish »

Yuqoridagi misolda 0,5 soniya bosib turilganda yorliq "Hold me" va "Pressed" o‘rtasida almashadi.



Uzoq bosish davomida jarayonni ko‘rsatish

LongPressGesture ni .updating bilan birga ishlatib, bosish davom etayotgan holatni kuzating va bosib turilganda view’ni masshtablang.

Misol

import SwiftUI

struct LongPressProgressDemo: View {
  @GestureState private var isPressing = false
  @State private var done = false
  var body: some View {
    Circle()
      .fill(done ? .green : .gray)
      .frame(width: 80, height: 80)
      .scaleEffect(isPressing ? 0.9 : 1)
      .gesture(
        LongPressGesture(minimumDuration: 0.6)
          .updating($isPressing) { value, state, _ in state = value }
          .onEnded { _ in done.toggle() }
      )
  }
}
import SwiftUI

struct ContentView: View {
  var body: some View { LongPressProgressDemo() }
}
import SwiftUI

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup { ContentView() }
  }
}

Misolni ishga tushirish »

Yuqoridagi misolda doira bosib turilganda kattalashadi va qo‘yib yuborilganda rangini almashtiradi.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!