Long Press — qu'est-ce que c'est, le geste de toucher prolongé dans les applications

Auteur : IT Sectr Publié le : 2026-02-27 Temps de lecture : 8 min

Long Press est un geste d'appui long où le doigt reste sur l'écran pendant un certain temps (généralement 0,5 à 1 seconde) sans bouger. Contrairement à Tap, Long Press n'est pas reconnu au moment du toucher, mais après l'expiration du délai. Le geste est utilisé pour invoquer un menu contextuel, prévisualiser le contenu, sélectionner plusieurs objets et activer des actions supplémentaires. Il est implémenté sur iOS via UILongPressGestureRecognizer, et sur Android via setOnLongClickListener ou GestureDetector.

Points clés

  • Délai — la principale différence entre Long Press et Tap : nécessite de maintenir 0,5 à 1 seconde
  • Menu contextuel — l'utilisation la plus courante de Long Press : invoquer des options supplémentaires pour un élément
  • UILongPressGestureRecognizer — la classe principale iOS pour gérer l'appui long avec des callbacks d'état
  • setOnLongClickListener — la méthode View Android qui déclenche un écouteur en cas d'appui long
  • Multi-état — Long Press passe par les états began, changed, ended, cancelled sur iOS

Qu'est-ce que Long Press ?

Long Press (appui long, toucher prolongé) est un geste d'interface multi-touch où l'utilisateur touche l'écran et maintient le doigt immobile pendant une durée déterminée. Le système ne réagit pas instantanément : il attend un délai d'inactivité (généralement 500 ms) et ne reconnaît le geste comme Long Press qu'après son expiration. Si le doigt est levé plus tôt, le geste est interprété comme un Tap normal.

Le geste est un élément fondamental des interfaces mobiles modernes. Apple l'utilise pour invoquer des menus contextuels dans les applications (Messages, Safari, Files). Google a intégré Long Press dans la sélection de texte, la réorganisation des icônes sur l'écran d'accueil et l'invocation de menus contextuels dans Android. Dans les interfaces web, l'appui long émule souvent le clic droit de la souris sur les appareils mobiles, où il n'y a pas de bouton droit physique.

Historiquement, Long Press est apparu comme une alternative au menu contextuel (clic droit) pour les écrans tactiles. Les premières implémentations sont apparues sur des appareils à écrans résistifs (Palm, Windows Mobile au début des années 2000), mais le geste ne s'est standardisé qu'avec l'avènement de l'iPhone et d'Android. Les guides d'interface humaine des deux plateformes décrivent Long Press comme une action secondaire — pas un remplacement de Tap, mais une extension de fonctionnalité.

En quoi Long Press diffère de Tap

Long Press et Tap sont deux gestes différents avec des sémantiques différentes. Tap est un toucher instantané : le doigt touche l'écran et se lève en 100 à 300 ms. Tap est toujours une action principale : ouvrir une application, appuyer sur un bouton, suivre un lien. Long Press est une action secondaire : ouvrir un menu contextuel, commencer l'édition, afficher des informations supplémentaires.

ParamètreTapLong Press
Temps de maintien100–300 ms500–1000 ms
Type d'actionPrincipale (primary)Secondaire (secondary)
ExemplesOuvrir un lien, appuyer sur un boutonMenu contextuel, édition
RetourVisuel (surlignage)Tactile (Haptic Feedback)
API iOSUITapGestureRecognizerUILongPressGestureRecognizer
API AndroidsetOnClickListenersetOnLongClickListener

Règle clé : n'utilisez jamais Long Press comme seul moyen d'effectuer une action. Les utilisateurs s'attendent à ce que Tap effectue l'action principale et que Long Press ouvre des options supplémentaires. Violer ce principe (par exemple, exiger un appui long pour ouvrir un lien) conduit à une expérience utilisateur négative et réduit l'accessibilité.

Long Press sur iOS : UILongPressGestureRecognizer

UILongPressGestureRecognizer est le reconnaisseur de gestes standard du SDK iOS pour gérer l'appui long. Il hérite de UIGestureRecognizer et prend en charge la configuration de la durée minimale, du mouvement autorisé du doigt et du nombre de touches. Le reconnaisseur passe à l'état UIGestureRecognizerStateBegan après l'expiration du délai, puis à UIGestureRecognizerStateChanged lorsque le doigt bouge et UIGestureRecognizerStateEnded au relâchement.

swift
// UILongPressGestureRecognizer avec configuration de durée minimale
class ContextMenuViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

        // Temps de maintien minimal : 0,5 seconde
        longPressRecognizer.minimumPressDuration = 0.5

        // Mouvement autorisé du doigt : 10 points
        longPressRecognizer.allowableMovement = 10

        customView.addGestureRecognizer(longPressRecognizer)
    }

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

        // Création d'un menu contextuel
        let location = recognizer.location(in: self.view)
        ContextMenuPresenter.show(at: location)
    }
}

Paramètres de configuration : minimumPressDuration — temps en secondes avant l'activation (par défaut 0,5, pour l'accessibilité 0,65+ recommandé) ; allowableMovement — mouvement maximum du doigt en points (par défaut 10, l'augmentation aide en cas de tremblements). iOS prend en charge numberOfTouchesRequired pour les gestes multi-touch (par exemple, appui long à deux doigts). Le reconnaisseur s'intègre également avec UIContextMenuInteraction — lorsqu'un menu contextuel est ajouté à une UIView via UIContextMenuConfiguration, Long Press invoque automatiquement le menu contextuel sans implémentation manuelle du geste.

Long Press sur Android : setOnLongClickListener

setOnLongClickListener est une méthode View du SDK Android qui définit un écouteur d'appui long. Lorsqu'un utilisateur maintient une View pendant plus de 500 ms, le système appelle onLongClick(). La méthode retourne un booléen — true signifie que l'événement a été traité et ne doit pas se propager davantage, false signifie que l'événement peut être traité par d'autres écouteurs. Pour un traitement plus complexe (mouvement du doigt après le début de Long Press), on utilise GestureDetector avec OnGestureListener.

kotlin
// Exemple de setOnLongClickListener avec retour haptique
val itemView: View = findViewById(R.id.itemView)

itemView.setOnLongClickListener {
    // Réponse haptique pour confirmer le début du geste
    it.performHapticFeedback(
        HapticFeedbackConstants.LONG_PRESS
    )

    // Affichage du menu contextuel à la position de l'élément
    val popup = PopupMenu(this, it)
    popup.menuInflater.inflate(R.menu.context_menu, popup.menu)
    popup.show()

    true // Événement traité
}

GestureDetector offre un contrôle plus fin sur le geste. Contrairement à setOnLongClickListener, GestureDetector notifie du début (onLongPress), du mouvement (onScroll) et du relâchement. Cela permet des scénarios complexes — par exemple, lancer un glisser après un appui long (Drag-and-Drop). OnGestureListener nécessite l'implémentation de six méthodes : onDown, onShowPress, onSingleTapUp, onScroll, onLongPress, onFling.

Où l'appui long est utilisé

Long Press est utilisé dans des dizaines de scénarios d'interfaces mobiles. L'application la plus courante est le menu contextuel : l'appui long sur un contact affiche les options de communication (appel, message, email), sur un fichier — les options (copier, déplacer, supprimer), sur du texte — la sélection et le presse-papiers. Le lanceur Android utilise l'appui long sur une icône pour déplacer les applications et ajouter des widgets.

Sélection de texte est un exemple classique de Long Press sur les deux plateformes. Sur iOS, l'appui long sur du texte active une loupe pour positionner le curseur ; sur un mot — le sélectionne avec des marqueurs. Sur Android, l'appui long sélectionne le mot entier et affiche une barre d'actions (copier, couper, coller). Les deux plateformes utilisent le glissement ultérieur des marqueurs pour étendre la sélection.

Aperçu — sur iOS, l'appui long sur un lien dans Safari ou un message dans Mail ouvre un aperçu du contenu (peek). Sur Android, un comportement similaire est implémenté via Long Press sur une notification (développe la notification avec des boutons d'action). Les applications Photos utilisent l'appui long sur une vignette pour un aperçu rapide de l'image.

Glisser-déposer est souvent initié par Long Press. L'utilisateur maintient l'élément, le système passe en mode glisser, et le mouvement du doigt déplace l'élément sur l'écran. Android prend en charge ce scénario via View.startDragAndDrop() après Long Press. iOS utilise UIDragInteraction, où l'interaction de glissement nécessite un appui long pour commencer le glisser.

Recommandations pour utiliser Long Press

Les guides d'interface humaine des deux plateformes fournissent des recommandations claires : Long Press doit toujours être une action secondaire. Ne faites jamais de l'appui long le seul moyen d'effectuer une fonction critique. Les utilisateurs essaient d'abord Tap — si Tap ne fonctionne pas comme prévu, ils sont frustrés. Ajoutez des indices visuels : les menus contextuels peuvent être indiqués par une icône à trois points, et les éléments prenant en charge Long Press — par un indice visuel au toucher.

Le retour haptique est obligatoire pour Long Press. Lorsque le geste est reconnu, l'appareil doit le confirmer par une réponse haptique : sur iOS c'est UIImpactFeedbackGenerator avec une impulsion légère, sur Android — HapticFeedbackConstants.LONG_PRESS. Sans retour haptique, l'utilisateur n'est pas sûr que le geste a été enregistré et peut appuyer à nouveau, provoquant des actions indésirables.

RecommandationiOSAndroid
Délai de reconnaissance0,5–0,65 seconde500 ms (par défaut)
Retour haptiqueUIImpactFeedbackGeneratorHapticFeedbackConstants.LONG_PRESS
Retour visuelMenu contextuel, surlignagePopupMenu, animation ripple
AccessibilitéVoiceOver + Custom ActionsTalkBack + AccessibilityNodeInfo
Mouvement max. du doigtallowableMovement = 10 ptTouchSlop (~8 dp par défaut)
Conflit avec le défilementcancelsTouchesInView = delayedonInterceptTouchEvent + LongPress

Accessibilité : tous les utilisateurs ne peuvent pas effectuer un appui long (personnes avec des troubles moteurs, utilisateurs âgés). Fournissez toujours un moyen alternatif d'accéder aux actions Long Press — par exemple, via un bouton "Plus" dans l'interface ou via les fonctionnalités d'accessibilité du système (VoiceOver sur iOS, TalkBack sur Android). Pour iOS, vous pouvez ajouter des actions personnalisées via UIAccessibilityCustomAction, disponibles via le rotor VoiceOver.

Questions fréquentes

Quel est le temps de maintien standard pour Long Press ?

Le temps standard pour Long Press est de 0,5 seconde (500 ms) sur les deux plateformes. iOS permet de configurer minimumPressDuration de 0,3 à 1,0 seconde. Android utilise un délai fixe de 500 ms pour View.setOnLongClickListener. Pour les utilisateurs à mobilité réduite, il est recommandé d'augmenter le délai à 0,8–1,0 seconde.

Quelle est la différence entre Long Press et 3D Touch ?

Long Press est reconnu par le temps de maintien (0,5 s), 3D Touch — par la force de pression (grammes de force). 3D Touch n'est disponible que sur iPhone 6S–XR (technologie matérielle Force Touch). Depuis iOS 13, Apple a remplacé 3D Touch par Haptic Touch — une simulation logicielle fonctionnant via Long Press avec retour haptique. Haptic Touch est disponible sur tous les iPhones et iPads modernes.

Comment éviter le conflit entre Long Press et le défilement (ScrollView) ?

Le conflit entre Long Press et le défilement est un problème courant. Solution : définissez delaysTouchesBegan = true pour le reconnaisseur de gestes sur iOS (le système n'envoie pas touchesBegan immédiatement, mais attend la reconnaissance du geste). Sur Android, utilisez onInterceptTouchEvent retournant false pour Long Press. Si l'utilisateur commence à bouger le doigt avant le délai, le geste est annulé en faveur du défilement.

Peut-on utiliser Long Press dans les applications web (PWA) ?

Oui, Long Press est pris en charge dans les applications web via l'événement touchstart/touchend avec mesure du temps. Les navigateurs modernes prennent également en charge l'événement contextmenu, qui se déclenche lors d'un appui long sur les appareils mobiles. Pour la compatibilité entre navigateurs, utilisez des bibliothèques comme hammer.js ou implémentez un reconnaisseur personnalisé via setInterval dans le gestionnaire touchstart.

Comment ajouter un retour haptique pour Long Press sur iOS ?

Sur iOS, le retour haptique est ajouté via UIImpactFeedbackGenerator. Appelez impactOccurred() au moment du passage de UILongPressGestureRecognizer à l'état began. Pour une réponse légère, utilisez UIImpactFeedbackGenerator(style: .light). Pour une réponse plus marquée — .medium. Pour les menus contextuels, iOS ajoute automatiquement un retour haptique via UIContextMenuInteraction sans code supplémentaire.

Résumé

  • Long Press — geste de maintien du doigt sur l'écran pendant 0,5 à 1 seconde pour invoquer des actions secondaires
  • Différence de Tap — Tap est instantané (action principale), Long Press nécessite un délai (action secondaire)
  • API iOS — UILongPressGestureRecognizer avec paramètres minimumPressDuration et allowableMovement
  • API Android — View.setOnLongClickListener et GestureDetector.OnGestureListener
  • Utilisations — menus contextuels, sélection de texte, aperçu, lancement de glisser-déposer
  • Retour haptique — obligatoire pour confirmer à l'utilisateur la reconnaissance du geste
  • Accessibilité — fournissez toujours un accès alternatif aux actions Long Press

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi