Long Press — bu nədir, tətbiqlərdə uzun toxunma jesti

Müəllif: IT Sectr Dərc olunub: 2026-02-27 Oxuma vaxtı: 8 dəq

Long Press — uzun basma jesti, bu zaman barmaq ekranda müəyyən müddət (adətən 0,5–1 saniyə) hərəkət etmədən saxlanılır. Tap-dan fərqli olaraq, Long Press toxunma anında deyil, gecikmə taymeri bitdikdən sonra tanınır. Jest kontekst menyusu çağırmaq, önbaxış, bir neçə obyekti seçmək və əlavə hərəkətləri aktivləşdirmək üçün istifadə olunur. iOS-da UILongPressGestureRecognizer, Android-də isə setOnLongClickListener və ya GestureDetector vasitəsilə reallaşdırılır.

Əsas məqamlar

  • Gecikmə — Long Press-in Tap-dan əsas fərqi: 0,5–1 saniyə saxlanma tələb olunur
  • Kontekst menyusu — Long Press-in ən çox yayılmış tətbiqi: element üçün əlavə seçimlərin çağırılması
  • UILongPressGestureRecognizer — iOS-da uzun basmanı vəziyyət callback-ləri ilə idarə edən əsas sinif
  • setOnLongClickListener — Android View-in uzun basmada dinləyicini çağıran metodu
  • Multi-state — Long Press iOS-da began, changed, ended, cancelled vəziyyətlərindən keçir

Long Press nədir?

Long Press (uzun basma, uzun toxunma) — multitouch interfeysinin jesti, bu zaman istifadəçi ekrana toxunur və barmağını müəyyən müddət hərəkətsiz saxlayır. Sistem dərhal reaksiya vermir: o, taym-autu (adətən 500 ms) gözləyir və yalnız onun bitməsindən sonra jesti Long Press kimi tanıyır. Barmaq daha tez buraxılarsa — jest adi Tap kimi şərh olunur.

Jest müasir mobil interfeyslərin fundamental tikinti blokudur. Apple onu tətbiqlərdə (Messages, Safari, Files) kontekst menyularının çağırılması üçün istifadə edir. Google Long Press-i mətn seçmə sistemində, iş masasında ikonların daşınmasında və Android-də kontekst menyularının çağırılmasında tətbiq etmişdir. Veb-interfeyslərdə uzun basma çox vaxt fiziki sağ düyməsi olmayan mobil cihazlarda siçanın sağ klikini əvəz edir.

Tarixən Long Press sensor ekranlar üçün kontekst menyusuna (sağ klik) alternativ olaraq yaranmışdır. İlk tətbiqlər rezistiv ekranlı cihazlarda (Palm, 2000-ci illərin əvvəllərində Windows Mobile) rast gəlinir, lakin jest yalnız iPhone və Android-in meydana çıxması ilə standartlaşdırılmışdır. Hər iki platformanın Human Interface Guidelines qaydaları Long Press-i ikinci dərəcəli hərəkət kimi təsvir edir — Tap-ı əvəz etmək yox, funksionallığı genişləndirmək.

Long Press Tap-dan nə ilə fərqlənir

Long Press və Tap — müxtəlif semantikaya malik iki fərqli jestdir. Tap (toxunma) — ani basmadır: barmaq ekrana toxunur və 100–300 ms ərzində buraxılır. Tap həmişə əsas hərəkətdir (primary action): tətbiqi açmaq, düyməni basmaq, linkə keçmək. Long Press — ikinci dərəcəli hərəkətdir (secondary action): kontekst menyusunu açmaq, redaktəyə başlamaq, əlavə məlumatı göstərmək.

ParametrTapLong Press
Saxlanma müddəti100–300 ms500–1000 ms
Hərəkət növüƏsas (primary)İkinci dərəcəli (secondary)
NümunələrLinkin açılması, düymənin basılmasıKontekst menyusu, redaktə
Əks əlaqəVizual (highlight)Haptik (Haptic Feedback)
iOS APIUITapGestureRecognizerUILongPressGestureRecognizer
Android APIsetOnClickListenersetOnLongClickListener

Əsas qayda: heç vaxt Long Press-i hərəkəti yerinə yetirməyin yeganə yolu kimi istifadə etməyin. İstifadəçilər Tap-ın əsas hərəkəti yerinə yetirməsini, Long Press-in isə əlavə seçimləri açmasını gözləyirlər. Bu prinsipin pozulması (məsələn, linki açmaq üçün uzun basma tələb etmək) mənfi istifadəçi təcrübəsinə və əlçatanlığın azalmasına gətirib çıxarır.

iOS-da Long Press: UILongPressGestureRecognizer

UILongPressGestureRecognizer — iOS SDK-da uzun basmanı idarə etmək üçün standart jest tanıyıcısı. O, UIGestureRecognizer-dən miras alır və minimal müddət, barmağın icazə verilən yerdəyişməsi və toxunma sayının konfiqurasiyasını dəstəkləyir. Tanıyıcı taymer bitdikdən sonra UIGestureRecognizerStateBegan vəziyyətinə, barmaq hərəkət etdikdə UIGestureRecognizerStateChanged-ə və buraxıldıqda UIGestureRecognizerStateEnded-ə keçir.

swift
// UILongPressGestureRecognizer minimal müddət konfiqurasiyası ilə
class ContextMenuViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let longPressRecognizer = UILongPressGestureRecognizer(
            target: self,
            action: #selector(handleLongPress(_:))
        )

        // Minimal saxlama müddəti: 0.5 saniyə
        longPressRecognizer.minimumPressDuration = 0.5

        // Barmağın icazə verilən yerdəyişməsi: 10 nöqtə
        longPressRecognizer.allowableMovement = 10

        customView.addGestureRecognizer(longPressRecognizer)
    }

    @objc func handleLongPress(_ recognizer: UILongPressGestureRecognizer) {
        guard recognizer.state == .began else { return }

        // Kontekst menyusunun yaradılması
        let location = recognizer.location(in: self.view)
        ContextMenuPresenter.show(at: location)
    }
}

Konfiqurasiya parametrləri: minimumPressDuration — işə düşməyə qədər saniyələrlə vaxt (standart 0.5, accessibility üçün 0.65+ tövsiyə olunur); allowableMovement — barmağın nöqtələrlə maksimum yerdəyişməsi (standart 10, artırma əl titrəməsində kömək edir). iOS multitouch jestləri üçün numberOfTouchesRequired-ı dəstəkləyir (məsələn, iki barmaqla uzun basma). Tanıyıcı həmçinin UIContextMenuInteraction ilə inteqrasiya olunur — UIView-ə UIContextMenuConfiguration vasitəsilə context menu əlavə edildikdə, Long Press jestin əl ilə reallaşdırılması olmadan avtomatik kontekst menyusunu çağırır.

Android-də Long Press: setOnLongClickListener

setOnLongClickListener — Android SDK-da View-in uzun basma dinləyicisini təyin edən metodu. İstifadəçi View-i 500 ms-dən çox saxladıqda, sistem onLongClick()-i çağırır. Metod boolean qaytarır — true hadisənin işləndiyini və daha ötürülməməli olduğunu, false isə hadisənin digər dinləyicilər tərəfindən işlənə biləcəyini bildirir. Daha mürəkkəb idarəetmə üçün (Long Press başladıqdan sonra barmaq hərəkəti) OnGestureListener ilə GestureDetector istifadə olunur.

kotlin
// Haptik əks əlaqə ilə setOnLongClickListener nümunəsi
val itemView: View = findViewById(R.id.itemView)

itemView.setOnLongClickListener {
    // Jestin başlanğıcını təsdiqləmək üçün haptik cavab
    it.performHapticFeedback(
        HapticFeedbackConstants.LONG_PRESS
    )

    // Elementin mövqeyində kontekst menyusunun göstərilməsi
    val popup = PopupMenu(this, it)
    popup.menuInflater.inflate(R.menu.context_menu, popup.menu)
    popup.show()

    true // Hadisə işləndi
}

GestureDetector jest üzərində daha incə nəzarət təmin edir. setOnLongClickListener-dən fərqli olaraq, GestureDetector başlanğıc (onLongPress), hərəkət (onScroll) və buraxılma barədə xəbərdarlıq edir. Bu, mürəkkəb ssenariləri reallaşdırmağa imkan verir — məsələn, uzun basmadan sonra sürükləməyə başlamaq (Drag-and-Drop). OnGestureListener altı metodun reallaşdırılmasını tələb edir: onDown, onShowPress, onSingleTapUp, onScroll, onLongPress, onFling.

Uzun basma harada tətbiq olunur

Long Press mobil interfeyslərin onlarla ssenarisində istifadə olunur. Ən geniş yayılmış tətbiq kontekst menyusudur: kontaktda uzun basma əlaqə variantlarını (zəng, mesaj, e-poçt), faylda — seçimləri (köçür, daşı, sil), mətndə — seçim və buferi göstərir. Android Launcher ikonada uzun basmanı tətbiqləri daşımaq və vidjetlər əlavə etmək üçün istifadə edir.

Mətn seçimi — hər iki platformada Long Press-in klassik nümunəsidir. iOS-da mətndə uzun basma kursoru yerləşdirmək üçün lupanı aktivləşdirir; sözdə — onu markerlərlə seçir. Android-də uzun basma bütün sözü seçir və hərəkət panelini (köçür, kəs, yapışdır) göstərir. Hər iki platforma seçimi genişləndirmək üçün markerlərin sürüklənməsindən istifadə edir.

Önbaxış — iOS-da Safari-də linkdə və ya Mail-də mesajda uzun basma məzmunun önbaxışını açır (peek). Android-də oxşar davranış bildirişdə Long Press vasitəsilə reallaşdırılır (bildirişi hərəkət düymələri ilə genişləndirir). Photos tətbiqləri şəklin tez önbaxışı üçün miniatür uzun basmadan istifadə edir.

Drag-and-Drop çox vaxt Long Press ilə başladılır. İstifadəçi elementi saxlayır, sistem sürükləmə rejiminə keçir və barmağın hərəkəti elementi ekranda hərəkət etdirir. Android bu ssenarini Long Press-dən sonra View.startDragAndDrop() vasitəsilə dəstəkləyir. iOS UIDragInteraction istifadə edir, burada drag interaction sürükləməyə başlamaq üçün uzun basma tələb edir.

Long Press istifadəsi üzrə tövsiyələr

Human Interface Guidelines hər iki platformada aydın tövsiyələr verir: Long Press həmişə ikinci dərəcəli hərəkət olmalıdır. Heç vaxt uzun basmanı kritik funksiyanı yerinə yetirməyin yeganə yolu etməyin. İstifadəçilər əvvəlcə Tap-ı sınayırlar — əgər Tap gözlənildiyi kimi işləmirsə, onlar məyus olurlar. Vizual ipuçları əlavə edin: kontekst menyusu üç nöqtə işarəsi ilə göstərilə bilər, Long Press-i dəstəkləyən elementlər isə toxunma zamanı vizual işarə ilə.

Haptik əks əlaqə Long Press üçün məcburidir. Jest tanındıqda, cihaz bunu haptik cavabla təsdiqləməlidir: iOS-da bu UIImpactFeedbackGenerator yüngül impulsladır, Android-də — HapticFeedbackConstants.LONG_PRESS. Haptik əks əlaqə olmadan istifadəçi jestin işlədiyinə əmin olmur və təkrar basa bilər, arzuolunmaz hərəkətlərə səbəb ola bilər.

TövsiyəiOSAndroid
Tanıma taym-autu0.5–0.65 saniyə500 ms (standart)
Haptik əks əlaqəUIImpactFeedbackGeneratorHapticFeedbackConstants.LONG_PRESS
Vizual feedbackKontekst menyusu, seçimPopupMenu, dalğa animasiyası
Əlçatanlıq (Accessibility)VoiceOver + Custom ActionsTalkBack + AccessibilityNodeInfo
Maks. barmaq yerdəyişməsiallowableMovement = 10 ptTouchSlop (standart ~8 dp)
Sürüşdürmə ilə konfliktcancelsTouchesInView = delayedonInterceptTouchEvent + LongPress

Əlçatanlıq: bütün istifadəçilər uzun basma hərəkətini yerinə yetirə bilməz (motor pozuntuları olan şəxslər, yaşlı istifadəçilər). Həmişə Long Press hərəkətlərinə alternativ giriş təmin edin — məsələn, interfeysdə «Daha çox» düyməsi və ya sistem əlçatanlıq funksiyaları (iOS-da VoiceOver, Android-də TalkBack) vasitəsilə. iOS üçün UIAccessibilityCustomAction-da VoiceOver rotorundan əlçatan olan Custom Actions əlavə edilə bilər.

Tez-tez verilən suallar

Long Press üçün standart saxlama müddəti nə qədərdir?

Long Press üçün standart müddət hər iki platformada 0,5 saniyə (500 ms) təşkil edir. iOS minimumPressDuration-u 0.3-dən 1.0 saniyəyə qədər konfiqurasiya etməyə imkan verir. Android View.setOnLongClickListener üçün sabit 500 ms taym-autdan istifadə edir. Motor məhdudiyyəti olan istifadəçilər üçün taym-autu 0,8–1,0 saniyəyə qədər artırmaq tövsiyə olunur.

Long Press və 3D Touch arasında nə fərq var?

Long Press saxlama müddətinə (0,5 s) görə tanınır, 3D Touch — basma gücünə görə (qram təzyiq). 3D Touch yalnız iPhone 6S–XR-də mövcuddur (apparat Force Touch texnologiyası). iOS 13-dən etibarən Apple 3D Touch-ı Haptic Touch ilə əvəz etmişdir — haptik əks əlaqə ilə Long Press vasitəsilə işləyən proqram təqlidi. Haptic Touch bütün müsir iPhone və iPad-lərdə mövcuddur.

Long Press-in sürüşdürmə (ScrollView) ilə konfliktindən necə qaçınmaq olar?

Long Press və sürüşdürmə konflikti tez-tez rast gəlinən problemdir. Həll yolu: iOS-da jest tanıyıcısı üçün delaysTouchesBegan = true təyin edin (sistem touchesBegan-ı dərhal göndərmir, jestin tanınmasını gözləyir). Android-də Long Press üçün false qaytaran onInterceptTouchEvent istifadə edin. İstifadəçi taym-autdan əvvəl barmağını hərəkət etdirməyə başlayarsa — jest sürüşdürmənin xeyrinə ləğv edilir.

Long Press veb-tətbiqlərdə (PWA) istifadə edilə bilərmi?

Bəli, Long Press veb-tətbiqlərdə dəstəklənir vaxtın ölçülməsi ilə touchstart/touchend hadisələri vasitəsilə. Müasir brauzerlər həmçinin mobil cihazlarda uzun basma zamanı işə düşən contextmenu hadisəsini dəstəkləyir. Çarpaz-brauzer uyğunluğu üçün hammer.js kitabxanalarından istifadə edin və ya touchstart handler-də setInterval vasitəsilə xüsusi tanıyıcı reallaşdırın.

iOS-da Long Press zamanı haptik əks əlaqəni necə əlavə etmək olar?

iOS-da haptik əks əlaqə UIImpactFeedbackGenerator vasitəsilə əlavə edilir. UILongPressGestureRecognizer began vəziyyətinə keçdiyi anda impactOccurred()-i çağırın. Yüngül cavab üçün UIImpactFeedbackGenerator(style: .light) istifadə edin. Daha nəzərə çarpan üçün — .medium. Kontekst menyuları üçün iOS əlavə kod olmadan UIContextMenuInteraction vasitəsilə avtomatik haptik əks əlaqə əlavə edir.

Nəticə

  • Long Press — ikinci dərəcəli hərəkətləri çağırmaq üçün barmağı ekranda 0,5–1 saniyə saxlama jesti
  • Tap-dan fərqi — Tap dərhal yerinə yetirilir (primary action), Long Press taym-aut tələb edir (secondary action)
  • iOS API — UILongPressGestureRecognizer minimumPressDuration və allowableMovement parametrləri ilə
  • Android API — View.setOnLongClickListener və GestureDetector.OnGestureListener
  • Tətbiq — kontekst menyuları, mətn seçimi, önbaxış, Drag-and-Drop-un başladılması
  • Haptik əks əlaqə — jestin tanınmasını istifadəçiyə təsdiqləmək üçün məcburidir
  • Əlçatanlıq — həmişə Long Press hərəkətlərinə alternativ giriş təmin edin

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun