Tap: bu nima, iOS va Android-da teginishlarni qayta ishlash

Muallif: IT Sectr Nashr etilgan: 2026-02-27 O'qish vaqti: 9 daq

Tap — sensor interfeyslarning asosiy jesti: barmoq bilan ekranga bir marta teginish va keyin qo'yib yuborish. Tap mobil operatsion tizimlarda asosiy harakat (primary action) hisoblanadi — ilovalarni ochish, tugmalarni bosish, ro'yxat elementlarini tanlash. 100–300 ms ichida tanib olinadi va klik hodisasini yaratadi. iOS da UITapGestureRecognizer orqali, Android da — setOnClickListener yoki View.onClick orqali qayta ishlanadi.

Asosiy fikrlar

  • Asosiy jest — Tap sensor interfeys bilan o'zaro aloqa boshlanadigan fundamental jestdir
  • Primary action — Tap har doim asosiy harakatni bajaradi: tugmani bosish, havolani ochish, elementni tanlash
  • UITapGestureRecognizer — iOS da multitouch va ko'p marta teginishni qo'llab-quvvatlovchi asosiy sinf
  • setOnClickListener — Android da View dagi kliklarni qayta ishlash uchun standart usul
  • Kechikish — Tap 100–300 ms ichida tanib olinadi va ushlab turish vaqti chegarasi bo'lmasligi kerak

Tap nima?

Tap (teginish, bosish) — barmoq yoki stilus bilan sensor ekranga tez teginish jesti. Jest ikki fazadan iborat: teginish (touch down) va qo'yib yuborish (touch up), ular bir joyda harakatlanmasdan sodir bo'ladi. Tizim Tap ni down va up orasidagi vaqt oralig'i chegara qiymatidan (odatda 300–500 ms) oshmaganda taniydi. Foydalanuvchi barmog'ini uzoqroq ushlab tursa — jest Long Press ga aylanadi.

Tap — mobil UX asosi. Barcha mobil platformalarda Tap ish stoli interfeyslarida ishlatiladigan sichqonchaning chap klikini almashtiradi. Sichqoncha klikidan farqli o'laroq, Tap da modifikatorlar (Shift+klik, Ctrl+klik) va hover yo'q — bu cheklash mobil interfeyslar dizaynini shakllantiradi. Oldindan ko'rish yo'qligini kompensatsiya qilish uchun mobil platformalar vizual teskari aloqadan foydalanadi: teginishda highlight, Android da ripple effekti, iOS da shaffoflikni o'zgartirish.

Tap anatomiyasi tizim darajasida besh bosqichni o'z ichiga oladi: sensorning uyg'onishi (teginish), koordinatalarni aniqlash, shovqinni filtrlash (barmoq chegara masofasidan ko'proq siljimasligi kerak), tugashni kutish (qo'yib yuborish yoki ushlab turish), tasniflash (Tap, Long Press, Drag). Zamonaviy sensor kontrollerlari bu siklini 60–120 Hz so'rov chastotasida 8–16 ms ichida qayta ishlaydi.

Tap va Click: farqi nimada?

Tap va Click — turli fizikaga ega bo'lgan turli hodisalar. Click — sichqoncha tugmasini bir xil holatda bosish va qo'yib yuborishda yuzaga keladigan sichqoncha hodisasi. Tap — barmoq teginishida yuzaga keladigan sensor ekran hodisasi. Mobil qurilmalarda brauzer Tap ni 300–350 ms kechikish bilan click hodisasiga aylantiradi (kattalashtirish uchun ikki marta teginishni emulyatsiya qilish uchun). Bu kechikish tarixan mobil veb muammosi edi, Apple va Google user-scalable=no bilan meta viewport ni joriy qilgunga qadar.

ParametrTap (sensor)Click (sichqoncha)
Kirish qurilmasiBarmoq, stilusSichqoncha kursori
Fazalartouchstart → touchendmousedown → mouseup
Oldindan ko'rish (hover)Yo'qBor (hover)
Kechikish0–500 ms0 ms
AniqlikPast (barmoq kursordan kengroq)Yuqori (piksel)
ModifikatorlarYo'qShift, Ctrl, Cmd
Ko'p martaMultitouch (2+ barmoq)Yo'q (bitta kursor)

Touch Events — Mouse Events dan alohida API. Sensor hodisalari (touchstart, touchmove, touchend) teginish nuqtalari massivi (TouchList), koordinatalar, bosim kuchi (pressure) va teginish maydoni o'lchamini (radiusX, radiusY) uzatadi. Mouse Events faqat kursor koordinatalarini uzatadi. Zamonaviy brauzerlar click ni touchend dan sintez qiladi, agar barmoq harakati va touchcancel hodisasi bo'lmagan bo'lsa. Pointer Events API ikkala yondashuvni birlashtirib, barcha kirish qurilmalarining yagona qayta ishlanishini ta'minlaydi.

iOS da Tap: UITapGestureRecognizer

UITapGestureRecognizer — iOS SDK da yagona va ko'p martalik Tap uchun standart tanib oluvchi. numberOfTapsRequired (ketma-ket teginishlar soni) va numberOfTouchesRequired (bir vaqtda teginadigan barmoqlar soni) konfiguratsiyasini qo'llab-quvvatlaydi. Tanib oluvchi foydalanuvchi barmog'ini qo'yib yuborganda va teginish siljish chegarasidan oshmaganda UIGestureRecognizerStateRecognized holatiga o'tadi.

swift
// Double Tap qo'llab-quvvatlashi bilan UITapGestureRecognizer
class InteractiveImageViewController: UIViewController {

    private var imageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Single Tap — boshqaruv elementlarini ko'rsat/yashir
        let singleTap = UITapGestureRecognizer(
            target: self,
            action: #selector(handleSingleTap)
        )
        imageView.addGestureRecognizer(singleTap)

        // Double Tap — rasmni kattalashtirish
        let doubleTap = UITapGestureRecognizer(
            target: self,
            action: #selector(handleDoubleTap)
        )
        doubleTap.numberOfTapsRequired = 2

        // Single Tap faqat Double Tap tanib olinmasa ishga tushadi
        singleTap.require(doubleTap.toFail())
        imageView.addGestureRecognizer(doubleTap)
    }

    @objc private func handleSingleTap() { /* boshqaruv elementlarini ko'rsatish */ }
    @objc private func handleDoubleTap() { /* masshtablash */ }
}

Muhim namuna: Single va Double Tap ni bir vaqtda qo'llab-quvvatlashda require(_:toFail:) chaqirilishi kerak. Busiz single tap darhol ishga tushadi, tizimga ikkinchi teginishni kutishga imkon bermaydi. iOS shuningdek UIControl.addTarget orqali Tap ni tanib olishni qo'llab-quvvatlaydi — UIButton, UISwitch va boshqa boshqaruv elementlari uchun. UIKit ning ichki boshqaruv elementlari allaqachon standart Tap qayta ishlashga ega va ularning ustiga UITapGestureRecognizer qo'shish ziddiyatlarga olib kelishi mumkin.

Android da Tap: setOnClickListener

View.setOnClickListener — Android SDK da View dagi kliklarni qayta ishlash uchun standart usul. Foydalanuvchi View ga teginib, barmog'ini xuddi shu elementda qo'yib yuborganda (touch down → touch up View ichida), onClick() usuli chaqiriladi. Android avtomatik ravishda teginish animatsiyasi bilan ripple effektini (API 21+) qo'shadi. Tugma PRESSED holatida bosilgan hisoblanadi, bu vizual ravishda selektor yoki RippleDrawable orqali ko'rsatiladi.

kotlin
// Data Binding bilan Fragment da setOnClickListener
class ItemListFragment : Fragment() {

    private var binding: FragmentItemListBinding? = null

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        binding = FragmentItemListBinding.bind(view)
        binding.submitButton.setOnClickListener {
            submitForm()
        }

        // Ikki marta bosishni oldini olish uchun debounce bilan tinglovchi
        binding.submitButton.setOnClickListener(
            DebouncingClickListener {
                submitForm()
            }
        )
    }

    private fun submitForm() {
        // Forma ma'lumotlarini yuborish
    }
}

Debounce — Android dasturlashda muhim namuna. Foydalanuvchi tasodifan tugmani qisqa vaqt ichida ikki marta bosishi mumkin, bu esa formani ikki marta yuborishga yoki harakatni ikki marta bajarishga olib keladi. Yechim: 500–1000 ms davomida takroriy kliklarni bloklovchi DebouncingClickListener o'rami. Google ushbu yondashuvni Android Architecture Components rasmiy misollarida qo'llashni tavsiya qiladi. RecyclerView uchun callback interfeysi bilan ListAdapter orqali setOnItemClickListener taqdim etilgan.

Ko'p marta teginishlar: Double Tap va Triple Tap

Double Tap (ikki marta teginish) — 300–400 ms dan ko'p bo'lmagan interval bilan ikkita ketma-ket Tap. Rasmlarni kattalashtirish (xaritalar, fotosuratlar), ijtimoiy tarmoqlarda layklar (Instagram, Twitter), ro'yxat boshiga qaytish (Phone, Messages) uchun ishlatiladi. Triple Tap (uch marta teginish) kamroq uchraydi — asosan accessibility funksiyalari (to'liq ekran rejimi, VoiceOver) va o'yinlarda qo'llaniladi.

Double Tap ni amalga oshirish Single Tap bilan sinxronizatsiyani talab qiladi: ikkala jestni bitta elementga qo'shsangiz, Single Tap kechikish bilan ishlaydi (tizim ikkinchi teginishni kutadi). iOS da bu kechikish require(toFail:) orqali boshqariladi — Single Tap tizim Double Tap bo'lmasligiga ishonch hosil qilmaguncha kechiktiriladi. Android da onSingleTapConfirmed va onDoubleTap callback lari bilan GestureDetector.OnDoubleTapListener ishlatiladi. onSingleTapConfirmed faqat vaqt chegarasidan so'ng, tizim bu bitta teginish ekanligiga ishonch hosil qilganda chaqiriladi.

kotlin
// Android da GestureDetector orqali Double Tap
class PhotoViewerActivity : AppCompatActivity() {

    private var gestureDetector: GestureDetector? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        gestureDetector = GestureDetector(this, object : GestureDetector.SimpleOnGestureListener() {

            override fun onSingleTapConfirmed(e: MotionEvent): Boolean {
                toggleControls() // boshqaruvlarni ko'rsat/yashir
                return true
            }

            override fun onDoubleTap(e: MotionEvent): Boolean {
                zoomToPoint(e.x, e.y) // teginish nuqtasida kattalashtirish
                return true
            }
        })
    }
}

Instagram-like double tap — ijtimoiy ilovalar uchun mashhur UX namunasi. Fotosuratga ikki marta teginish layk animatsiyasini (yurak belgisi) ishga tushiradi. Android da GestureDetector yoki iOS da numberOfTapsRequired=2 bilan UITapGestureRecognizer orqali amalga oshiriladi. Animatsiya uchun iOS da Core Animation, Android da esa ObjectAnimator/AnimatorSet ishlatiladi. Double tap javob vaqti minimal bo'lishi kerak — foydalanuvchi ikkinchi teginishdan so'ng darhol animatsiyani kutadi.

Interfeyslarda Tap dan foydalanish qoidalari

Human Interface Guidelines Apple va Material Design Google Tap uchun aniq talablarni qo'yadi. Touch-target minimal hajmi: 44×44 pt iOS uchun va 48×48 dp Android uchun. Bu ekranda ~9 mm ga to'g'ri keladi — o'rtacha katta yoshli odamning barmoq yostig'i hajmi. Touch maqsadlari orasidagi masofa soxta teginishlarni oldini olish uchun kamida 8 pt/dp bo'lishi kerak.

QoidaQiymatAsoslash
Maqsadning minimal hajmi44×44 pt (iOS) / 48×48 dp (Android)Barmoq yostig'ining o'rtacha hajmi ~9 mm
Maqsadlar orasidagi masofa≥8 pt / ≥8 dpSoxta teginishlarning oldini olish
Vizual teskari aloqaHighlight / RippleTeginish registratsiyasini tasdiqlash
Teginish animatsiyasining davomiyligi100–200 msIdrok uchun yetarli, interfeysni sekinlashtirmaydi
Double Tap ni qayta ishlashSingle Tap kechikishini talab qiladiSoxta ishga tushishni oldini olish
Ekranning chekka sohalariKattalashtirilgan urish zonasiQurilmani ushlashni kompensatsiyalash

Vizual teskari aloqa Tap uchun majburiydir. Foydalanuvchi teginish ro'yxatga olinganligini ko'rishi kerak: rang o'zgarishi, opacity, ripple animatsiyasi yoki highlight. Teskari aloqasiz foydalanuvchi qayta bosishi mumkin, bu esa istalmagan harakatlarga olib keladi. iOS da standart touch highlight animatsiyasi — 0.3 shaffoflik o'zgarishi 0.15 s davomiylikda. Android da — teginish nuqtasidan tarqaladigan Material ripple effekti. Vizual teskari aloqadan oldin kechikishdan foydalanmang — foydalanuvchi teginish bilan bir vaqtda reaksiyani ko'rishi kerak.

Tez-tez so'raladigan savollar

Veb dasturlashda Tap va Click o'rtasidagi farq nima?

Tap — sensor hodisa, Click — sichqoncha hodisasi. Brauzerda Tap 300 ms kechikish bilan Click ga aylantiriladi (Double Tap Zoom dan farqlash uchun). Zamonaviy brauzerlar (Chrome 32+, Safari 9.1+) meta viewport width=device-width bilan bu kechikishni o'chiradi. Yagona qayta ishlash uchun Pointer Events API dan foydalaning: pointerdown/pointerup barcha kirish qurilmalari (sichqoncha, sensor, stilus) uchun mos keladi.

Tap uchun minimal tugma hajmi qanday?

Minimal touch target — 44×44 nuqta (iOS) yoki 48×48 dp (Android). Bu jismoniy ekranda taxminan 9×9 mm ga to'g'ri keladi. Agar tugma vizual ravishda kichikroq bo'lsa (masalan, 24×24 ikonka), hit maydonini UIEdgeInsets (iOS) yoki TouchDelegate (Android) orqali oshiring. Qo'shni maqsadlar orasidagi masofa soxta teginishlarni oldini olish uchun kamida 8 birlik bo'lishi kerak.

Tugmani ikki marta bosishni qanday oldini olish mumkin?

Double-click prevention debounce mexanizmi orqali amalga oshiriladi: birinchi klikdan so'ng tugma 500–1000 ms ga bloklanadi. Android da DebouncingClickListener (Architecture Components dan tayyor yechim) dan foydalaning. iOS da — tugmaning isEnabled xususiyatini bosgandan so'ng darhol o'chiring va DispatchQueue.main.asyncAfter orqali yoqing. Veb ilovalarda — birinchi klikdan so'ng button elementida disabled bayrog'ini o'rnating.

Long Tap nima va Tap dan qanday farq qiladi?

Long Tap (Long Press) — barmoqni ekranda harakatlantirmasdan 500+ ms ushlab turish. Tap — tez teginish (100–300 ms). Tap asosiy harakatni (Primary Action) bajaradi, Long Tap — ikkilamchi (kontekst menyu, tahrirlash). iOS da Tap ni UITapGestureRecognizer, Long Press ni UILongPressGestureRecognizer qayta ishlaydi. Android da — setOnClickListener vs setOnLongClickListener.

Apple Pencil va S Pen stiluslari Tap ni qo'llab-quvvatlaydimi?

Ha, stiluslar Tap sifatida qayta ishlanadi standart sensor API orqali. Apple Pencil force (bosim kuchi), altitudeAngle (egilish burchagi) va azimuth (azimut) ni uzatadi. Android da S Pen o'xshash parametrlarni MotionEvent.getPressure() va getAxisValue(MotionEvent.AXIS_TILT) orqali uzatadi. Stiluslar uchun touch target ni 24×24 nuqtagacha kamaytirish mumkin, chunki stilusning aniqligi barmoqdan yuqori.

Xulosa

  • Tap — tez teginish jesti (100–300 ms), mobil interfeysning asosiy harakati
  • Long Press dan farqi — Tap ushlab turish vaqti chegarasiga ega emas va bir zumda bajariladi
  • iOS API — numberOfTapsRequired va numberOfTouchesRequired bilan UITapGestureRecognizer
  • Android API — View.setOnClickListener va GestureDetector.OnDoubleTapListener
  • Double Tap — kattalashtirish va layklar uchun 400 ms gacha interval bilan ikkita ketma-ket Tap
  • Touch target — minimal maqsad hajmi 44×44 pt (iOS) yoki 48×48 dp (Android)
  • Vizual teskari aloqa — teginish registratsiyasini tasdiqlash uchun majburiy

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing