Long Press — mi ez, a hosszú érintés gesztusa alkalmazásokban

Szerző: IT Sectr Megjelenés: 2026-02-27 Olvasási idő: 8 perc

Long Press — a hosszú lenyomás gesztusa, mely során az ujjat meghatározott ideig (általában 0,5–1 másodpercig) mozgás nélkül tartják a képernyőn. A Tap-pal ellentétben a Long Press nem az érintés pillanatában ismerŝik fel, hanem a késleltetési időzítő lejárta után. A gesztust helyi menü meghívására, előnézetre, több objektum kijelölésére és további műveletek aktiválására használják. iOS-ben a UILongPressGestureRecognizer, Androidban — a setOnLongClickListener vagy GestureDetector segítségével valósítják meg.

Főbb pontok

  • Késleltetés — a Long Press fő különbsége a Tap-tól: 0,5–1 másodpercig tartó lenyomás szükséges
  • Helyi menü — a Long Press leggyakoribb alkalmazása: további opciók meghívása egy elemhez
  • UILongPressGestureRecognizer — az iOS fő osztálya a hosszú lenyomás kezelésére állapot-visszahívásokkal
  • setOnLongClickListener — az Android View metódusa, amely a hosszú lenyomáskor meghívja a figyelőt
  • Multi-state — a Long Press iOS-ben a began, changed, ended, cancelled állapotokon megy keresztül

Mi az a Long Press?

Long Press (hosszú lenyomás, hosszú érintés) — a multitouch interfész egy gesztusa, mely során a felhasználó megérinti a képernyőt, és az ujját meghatározott ideig mozdulatlanul tartja. A rendszer nem reagál azonnal: várja az időtúllépést (általában 500 ms), és csak annak lejárta után ismeri fel a gesztust Long Press-ként. Ha az ujj korábban elengedésre kerül — a gesztus egy szokásos Tap-ként értelmeződik.

A gesztus a modern mobil interfészek alapvető építőeleme. Az Apple a helyi menük előhívására használja az alkalmazásokban (Messages, Safari, Files). A Google bevezette a Long Press-t a szövegkijelölés rendszerébe, az ikonok asztalon történő áthelyezésébe és a helyi menük előhívásába Androidban. Webes interfészeken a hosszú lenyomás gyakran az egér jobb gombjának működését utánozza olyan mobileszközökön, amelyek nem rendelkeznek fizikai jobb gombbal.

Történetileg a Long Press a helyi menü (jobb kattintás) alternatívájaként jelent meg az érintőképernyőkhöz. Az első implementációk rezisztív képernyős eszközökben (Palm, Windows Mobile a 2000-es évek elején) találhatók, de a gesztus csak az iPhone és Android megjelenésével vált szabványossá. Mindkét platform Human Interface Guidelines útmutatója a Long Press-t másodlagos műveletként írja le — nem a Tap helyettesítése, hanem a funkcionalitás bővítése.

Miben különbözik a Long Press a Tap-tól

Long Press és Tap — két különböző gesztus eltérő szemantikával. A Tap (érintés) — egy azonnali lenyomás: az ujj megérinti a képernyőt, és 100–300 ms-en belül elengedésre kerül. A Tap mindig a fő művelet (primary action): alkalmazás megnyitása, gomb megnyomása, linkre lépés. Long Press — másodlagos művelet (secondary action): helyi menü megnyitása, szerkesztés indítása, további információk megjelenítése.

ParaméterTapLong Press
Lenyomás ideje100–300 ms500–1000 ms
Művelet típusaFő (primary)Másodlagos (secondary)
PéldákLink megnyitása, gomb megnyomásaHelyi menü, szerkesztés
VisszajelzésVizuális (highlight)Haptikus (Haptic Feedback)
iOS APIUITapGestureRecognizerUILongPressGestureRecognizer
Android APIsetOnClickListenersetOnLongClickListener

Fő szabály: soha ne használja a Long Press-t egyetlen módként egy művelet végrehajtására. A felhasználók azt várják, hogy a Tap végrehajtja a fő műveletet, és a Long Press megnyitja a további opciókat. Ennek az elvnek a megsértése (például hosszú lenyomás követelménye egy link megnyitásához) negatív felhasználói élményhez és csökkentett akadálymentesítéshez vezet.

Long Press iOS-ben: UILongPressGestureRecognizer

UILongPressGestureRecognizer — a szabvány gesztusfelismerő az iOS SDK-ban a hosszú lenyomás kezelésére. Az UIGestureRecognizer-ből származik, és támogatja a minimális időtartam, a megengedett ujjmozgás és a érintések számának konfigurálását. A felismerő az időzítő lejárta után UIGestureRecognizerStateBegan állapotba, az ujj mozgásakor UIGestureRecognizerStateChanged állapotba, elengedéskor pedig UIGestureRecognizerStateEnded állapotba kerül.

swift
// UILongPressGestureRecognizer minimális időtartam konfigurálással
class ContextMenuViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

        // Minimális lenyomási idő: 0.5 másodperc
        longPressRecognizer.minimumPressDuration = 0.5

        // Megengedett ujjmozgás: 10 pont
        longPressRecognizer.allowableMovement = 10

        customView.addGestureRecognizer(longPressRecognizer)
    }

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

        // Helyi menü létrehozása
        let location = recognizer.location(in: self.view)
        ContextMenuPresenter.show(at: location)
    }
}

Konfigurációs paraméterek: minimumPressDuration — idő másodpercben a működésbe lépésig (alapértelmezett 0.5, akadálymentesítéshez 0.65+ ajánlott); allowableMovement — az ujj maximális elmozdulása pontokban (alapértelmezett 10, növelése remegés esetén segít). Az iOS támogatja a numberOfTouchesRequired-t többérintéses gesztusokhoz (például két ujjal történő hosszú lenyomás). A felismerő integrálódik a UIContextMenuInteraction őssel is — amikor a context menu hozzáadásra kerül a UIView-hez a UIContextMenuConfiguration révén, a Long Press automatikusan meghívja a helyi menüt a gesztus kézi implementálása nélkül.

Long Press Androidban: setOnLongClickListener

setOnLongClickListener — az Android SDK View metódusa, amely beállítja a hosszú lenyomás figyelőjét. Amikor a felhasználó 500 ms-nál tovább tartja a View-t, a rendszer meghívja az onLongClick()-et. A metódus boolean értéket ad vissza — a true azt jelenti, hogy az esemény feldolgozásra került és nem továbbítandó, a false azt, hogy az eseményt más figyelők is feldolgozhatják. Összetettebb kezeléshez (ujjmozgás a Long Press megkezdése után) a GestureDetector-t használják az OnGestureListener-rel.

kotlin
// Példa setOnLongClickListener haptikus visszajelzéssel
val itemView: View = findViewById(R.id.itemView)

itemView.setOnLongClickListener {
    // Haptikus válasz a gesztus kezdetének megerősítéséhez
    it.performHapticFeedback(
        HapticFeedbackConstants.LONG_PRESS
    )

    // Helyi menü megjelenítése az elem pozíciójában
    val popup = PopupMenu(this, it)
    popup.menuInflater.inflate(R.menu.context_menu, popup.menu)
    popup.show()

    true // Esemény feldolgozva
}

GestureDetector finomabb kontrollt biztosít a gesztus felett. A setOnLongClickListener-rel ellentétben a GestureDetector értesít a kezdetről (onLongPress), a mozgásról (onScroll) és az elengedésről. Ez lehetővé teszi összetett forgatókönyvek megvalósítását — például a húzás kezdeményezését hosszú lenyomás után (Drag-and-Drop). Az OnGestureListener hat metódus implementálását igényli: onDown, onShowPress, onSingleTapUp, onScroll, onLongPress, onFling.

Hol alkalmazzák a hosszú lenyomást

Long Press számos mobil interfész forgatókönyvben használatos. A leggyakoribb alkalmazás a helyi menü: a névjegyen történő hosszú lenyomás megjeleníti a kommunikációs opciókat (hívás, üzenet, e-mail), a fájlon — az opciókat (másolás, áthelyezés, törlés), a szövegen — a kijelölést és vágólapot. Az Android Launcher az ikonon történő hosszú lenyomást használja az alkalmazások áthelyezésére és widgetek hozzáadására.

Szövegkijelölés — a Long Press klasszikus példája mindkét platformon. iOS-ben a szövegen történő hosszú lenyomás aktiválja a nagyítót a kurzor pozicionálásához; egy szón — kijelöli azt jelölőkkel. Androidban a hosszú lenyomás kijelöli a teljes szót, és megjeleníti a műveleti panelt (másolás, kivágás, beillesztés). Mindkét platform a jelölők húzását használja a kijelölés bővítéséhez.

Előnézet — iOS-ben a Safari-beli linken vagy Mail-beli üzeneten történő hosszú lenyomás megnyitja a tartalom előnézetét (peek). Androidban hasonló viselkedés valósul meg értesítésen történő Long Press által (kibővíti az értesítést műveleti gombokkal). A Fotók alkalmazások a miniatörön történő hosszú lenyomást használják a kép gyors előnézetéhez.

Drag-and-Drop gyakran Long Press által indul. A felhasználó tartja az elemet, a rendszer átvált húzási módba, és az ujj mozgása mozgatja az elemet a képernyőn. Az Android támogatja ezt a forgatókönyvet a View.startDragAndDrop() által Long Press után. Az iOS a UIDragInteraction-t használja, ahol a drag interakció hosszú lenyomást igényel a húzás megkezdéséhez.

Javaslatok a Long Press használatához

Human Interface Guidelines mindkét platform egyértelmű javaslatokat ad: a Long Press mindig másodlagos művelet legyen. Soha ne tegye a hosszú lenyomást az egyetlen móddá egy kritikus funkció végrehajtására. A felhasználók először a Tap-ot próbálják — ha a Tap nem úgy működik, ahogy várják, csalódottak lesznek. Adjunk hozzá vizuális utalásokat: a helyi menük jelölhetők három pont ikonjával, és a Long Press-t támogató elemek — vizuális jelzéssel érintéskor.

Haptikus visszajelzés kötelező a Long Press számára. Amikor a gesztus felismerésre kerül, az eszköznek haptikus válasszal kell megerősítenie azt: iOS-ben ez az UIImpactFeedbackGenerator egy könnyű impulzussal, Androidban — a HapticFeedbackConstants.LONG_PRESS. Haptikus visszajelzés nélkül a felhasználó nem biztos abban, hogy a gesztus sikeres volt, és újra megnyomhatja, nem kívánt műveleteket okozva.

JavaslatiOSAndroid
Felismerési időtúllépés0.5–0.65 másodperc500 ms (alapértelmezett)
Haptikus visszajelzésUIImpactFeedbackGeneratorHapticFeedbackConstants.LONG_PRESS
Vizuális visszajelzésHelyi menü, kiemelésPopupMenu, ripple animáció
Akadálymentesítés (Accessibility)VoiceOver + Custom ActionsTalkBack + AccessibilityNodeInfo
Max. ujjmozgásallowableMovement = 10 ptTouchSlop (alapértelmezett ~8 dp)
Konfliktus a görgetésselcancelsTouchesInView = delayedonInterceptTouchEvent + LongPress

Akadálymentesítés: nem minden felhasználó képes hosszú lenyomást végrehajtani (mozgássérültek, idős felhasználók). Mindig biztosítson alternatív hozzáférést a Long Press műveletekhez — például egy «Továbbiak» gombon keresztül a kezelőfelületen vagy a rendszer akadálymentesítési funkcióin (VoiceOver iOS-ben, TalkBack Androidban) keresztül. iOS-ben Custom Actions adhatók hozzá az UIAccessibilityCustomAction-hez, amelyek a VoiceOver rotor segítségével érhetők el.

Gyakran ismételt kérdések

Mi a szabványos lenyomási idő a Long Press számára?

A szabványos idő a Long Press számára 0,5 másodperc (500 ms) mindkét platformon. Az iOS lehetővé teszi a minimumPressDuration beállítását 0.3 és 1.0 másodperc között. Az Android rögzített 500 ms időtúllépést használ a View.setOnLongClickListener számára. Korlátozott mozgásképességű felhasználók számára ajánlott az időtúllépés 0,8–1,0 másodpercre növelése.

Mi a különbség a Long Press és a 3D Touch között?

Long Press a lenyomás ideje (0,5 máp) alapján kerül felismerésre, 3D Touch — a nyomóerő (gramm nyomás) alapján. A 3D Touch csak iPhone 6S–XR készülékeken érhető el (hardveres Force Touch technológia). Az iOS 13-tól kezdve az Apple a 3D Touch-t Haptic Touch-ra cserélte — egy szoftveres utánzásra, amely Long Press-en keresztül működik haptikus visszajelzéssel. A Haptic Touch minden modern iPhone és iPad készüléken elérhető.

Hogyan kerülhető el a Long Press ütközése a görgetéssel (ScrollView)?

A Long Press és a görgetés ütközése gyakori probléma. Megoldás: állítsa be a delaysTouchesBegan = true értéket a gesztusfelismerő számára iOS-ben (a rendszer nem küldi el azonnal a touchesBegan-t, hanem vár a gesztus felismerésére). Androidban használja az onInterceptTouchEvent-et, amely false értéket ad vissza Long Press esetén. Ha a felhasználó az időtúllépés előtt elkezdi mozgatni az ujját — a gesztus érvénytelenítődik a görgetés javára.

Használható a Long Press webalkalmazásokban (PWA)?

Igen, a Long Press támogatott webalkalmazásokban a touchstart/touchend eseményen keresztül időméréssel. A modern böngészők támogatják a contextmenu eseményt is, amely hosszú lenyomáskor aktiválódik mobileszközökön. A több böngészős kompatibilitás érdekében használjon olyan könyvtárakat, mint a hammer.js, vagy valósítson meg egyedi felismerőt setInterval segítségével a touchstart kezelőben.

Hogyan adható hozzá haptikus visszajelzés a Long Press-hez iOS-ben?

iOS-ben a haptikus visszajelzés az UIImpactFeedbackGenerator segítségével adható hozzá. Hívja meg az impactOccurred()-et abban a pillanatban, amikor az UILongPressGestureRecognizer a began állapotba kerül. Könnyű válaszhoz használja az UIImpactFeedbackGenerator(style: .light) függvényt. Erősebb hatáshoz — .medium. Helyi menük esetén az iOS automatikusan hozzáadja a haptikus visszajelzést a UIContextMenuInteraction révén, többletkód nélkül.

Összefoglalás

  • Long Press — az ujj képernyőn tartásának gesztusa 0,5–1 másodpercig másodlagos műveletek előhívásához
  • Különbség a Tap-tól — a Tap azonnal végrehajtódik (primary action), a Long Press időtúllépést igényel (secondary action)
  • iOS API — UILongPressGestureRecognizer minimumPressDuration és allowableMovement paraméterekkel
  • Android API — View.setOnLongClickListener és GestureDetector.OnGestureListener
  • Alkalmazás — helyi menük, szövegkijelölés, előnézet, Drag-and-Drop kezdeményezése
  • Haptikus visszajelzés — kötelező a gesztus felismerésének megerősítéséhez a felhasználó számára
  • Akadálymentesítés — mindig biztosítson alternatív hozzáférést a Long Press műveletekhez

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is