Published on

SwiftUI-da Tap Gesture β€” qanday qo'shish va sozlash

Authors

Bu videoda biz Tap Gesture β€” ya'ni bosish imo-ishorasini ko'rib chiqamiz. Tap Gesture aslida Button bilan bir xil ishlaydi, lekin to'liq Button funksionalligisiz β€” shunchaki bosish harakatini aniqlaydi.

Ko'p SwiftUI dasturchilari Button o'rniga Tap Gesture ishlatishga o'tmoqda, chunki u yozish jihatidan ancha sodda va toza.


Asosiy sozlama β€” Button bilan taqqoslash

struct TapGestureBootcamp: View {

    @State var isSelected: Bool = false

    var body: some View {
        VStack(spacing: 40) {

            RoundedRectangle(cornerRadius: 25)
                .foregroundColor(isSelected ? .green : .red)
                .frame(height: 200)

            // BUTTON β€” to'liq funksionallik bilan
            Button {
                isSelected.toggle()
            } label: {
                Text("Tugma")
                    .font(.headline)
                    .foregroundColor(.white)
                    .frame(height: 55)
                    .frame(maxWidth: .infinity)
                    .background(Color.blue)
                    .cornerRadius(25)
            }

            // TAP GESTURE β€” xuddi shunday natija, soddaroq yozilish
            Text("Tap Gesture")
                .font(.headline)
                .foregroundColor(.white)
                .frame(height: 55)
                .frame(maxWidth: .infinity)
                .background(Color.blue)
                .cornerRadius(25)
                .onTapGesture {
                    isSelected.toggle()
                }

            Spacer()
        }
        .padding(40)
    }
}

Button va Tap Gesture farqi

Ikkalasi ham bir xil natija beradi β€” farq faqat bitta:

Button β€” bosilganda ko'rinishi bir zumga o'zgaradi (highlighted holat). Foydalanuvchi bosganini ko'radi.

Tap Gesture β€” highlighted holat yo'q. Bosilganda hech qanday vizual o'zgarish bo'lmaydi, lekin amal bajariladi.

// Button β€” bosib tursa ranglanadi (highlighted)
Button { isSelected.toggle() } label: {
    Text("Tugma")
}

// Tap Gesture β€” highlighted yo'q, lekin ishlaydi
Text("Tap Gesture")
    .onTapGesture {
        isSelected.toggle()
    }

Ko'pchilik foydalanuvchilar bu farqni sezmaydi. Lekin katta tugmalarda highlighted holat yaxshi β€” foydalanuvchi bosilganini his qiladi.


Ikki marta bosish β€” count parametri

count parametri bilan necha marta bosish kerakligini belgilash mumkin:

// Bir marta bosish (standart)
Text("Bir marta bos")
    .onTapGesture {
        isSelected.toggle()
    }

// Ikki marta bosish β€” Instagram-dagi "like" kabi
Text("Ikki marta bos")
    .onTapGesture(count: 2) {
        isSelected.toggle()
    }

// Besh marta bosish
Text("Besh marta bos")
    .onTapGesture(count: 5) {
        isSelected.toggle()
    }

count: 2 β€” faqat ikki marta tez bosilganda amal bajariladi. Bir marta bosish hech narsa qilmaydi. Instagram-da rasmni ikki marta bosib yoqtirishni xuddi shu usul bilan amalga oshirish mumkin.


Qachon Button, qachon Tap Gesture?

HolatIshlatish
Oddiy amal β€” faqat biror narsa bo'lsinTap Gesture β€” sodda va toza
Foydalanuvchi bosilganini his qilishi kerakButton β€” highlighted holat bor
Navigatsiya paneli kichik tugmalariTap Gesture β€” highlighted ko'rinmaydi
Katta, muhim tugmalarButton β€” vizual tasdiq muhim
Bosib ushlab turish animatsiyasi kerakButton β€” buni Tap Gesture qila olmaydi
Ikki marta bosish kerakTap Gesture β€” count: 2 bilan

Xulosa

// Oddiy holat β€” Tap Gesture yetarli
someView
    .onTapGesture {
        doSomething()
    }

// Ikki marta bosish
someView
    .onTapGesture(count: 2) {
        doSomething()
    }

Tap Gesture β€” button-ning sodda va toza muqobili. Agar faqat "bosildi" hodisasini aniqlash kerak bo'lsa, Tap Gesture yetarli. Agar highlighted holat, bosib ushlab turish yoki boshqa murakkab xatti-harakatlar kerak bo'lsa β€” Button ishlatgan ma'qul.

Rahmat, men Nick, bu Swiftful Thinking va keyingi videoda ko'rishguncha!

Buy mea coffee