Long Press — qué es, el gesto de toque prolongado en aplicaciones

Autor: IT Sectr Publicado: 2026-02-27 Tiempo de lectura: 8 min

Long Press es un gesto de pulsación larga en el que el dedo permanece en la pantalla durante un tiempo determinado (normalmente 0,5–1 segundo) sin moverse. A diferencia de Tap, Long Press no se reconoce en el momento del toque, sino después de que expire el temporizador de retardo. El gesto se utiliza para invocar un menú contextual, previsualizar contenido, seleccionar varios objetos y activar acciones adicionales. Se implementa en iOS mediante UILongPressGestureRecognizer, y en Android mediante setOnLongClickListener o GestureDetector.

Puntos clave

  • Retardo — la principal diferencia entre Long Press y Tap: requiere mantener pulsado 0,5–1 segundo
  • Menú contextual — el uso más común de Long Press: invocar opciones adicionales para un elemento
  • UILongPressGestureRecognizer — la clase principal de iOS para manejar pulsación larga con callbacks de estado
  • setOnLongClickListener — el método de View en Android que activa un listener en pulsación larga
  • Multi-estado — Long Press pasa por los estados began, changed, ended, cancelled en iOS

¿Qué es Long Press?

Long Press (pulsación larga, toque prolongado) es un gesto de interfaz multitáctil en el que el usuario toca la pantalla y mantiene el dedo inmóvil durante un tiempo determinado. El sistema no reacciona de inmediato: espera un tiempo de espera (normalmente 500 ms) y solo después de que expire lo reconoce como Long Press. Si el dedo se levanta antes, el gesto se interpreta como un Tap normal.

El gesto es un bloque de construcción fundamental de las interfaces móviles modernas. Apple lo utiliza para invocar menús contextuales en aplicaciones (Messages, Safari, Files). Google incorporó Long Press en la selección de texto, la reorganización de iconos en la pantalla de inicio y la invocación de menús contextuales en Android. En las interfaces web, la pulsación larga a menudo emula el clic derecho del ratón en dispositivos móviles, donde no hay un botón físico derecho.

Históricamente, Long Press surgió como una alternativa al menú contextual (clic derecho) para pantallas táctiles. Las primeras implementaciones aparecieron en dispositivos con pantallas resistivas (Palm, Windows Mobile a principios de los 2000), pero el gesto se estandarizó solo con la llegada del iPhone y Android. Las guías de interfaz humana de ambas plataformas describen Long Press como una acción secundaria — no un reemplazo de Tap, sino una extensión de la funcionalidad.

En qué se diferencia Long Press de Tap

Long Press y Tap son dos gestos diferentes con semántica diferente. Tap es una pulsación instantánea: el dedo toca la pantalla y se levanta en 100–300 ms. Tap siempre es una acción principal: abrir una aplicación, presionar un botón, seguir un enlace. Long Press es una acción secundaria: abrir un menú contextual, empezar a editar, mostrar información adicional.

ParámetroTapLong Press
Tiempo de pulsación100–300 ms500–1000 ms
Tipo de acciónPrincipal (primary)Secundaria (secondary)
EjemplosAbrir enlace, presionar botónMenú contextual, edición
RetroalimentaciónVisual (resaltado)Táctil (Haptic Feedback)
API de iOSUITapGestureRecognizerUILongPressGestureRecognizer
API de AndroidsetOnClickListenersetOnLongClickListener

Regla clave: nunca uses Long Press como la única forma de realizar una acción. Los usuarios esperan que Tap realice la acción principal y que Long Press abra opciones adicionales. Violar este principio (por ejemplo, requerir una pulsación larga para abrir un enlace) genera una experiencia de usuario negativa y reduce la accesibilidad.

Long Press en iOS: UILongPressGestureRecognizer

UILongPressGestureRecognizer es el reconocedor de gestos estándar en el SDK de iOS para manejar la pulsación larga. Hereda de UIGestureRecognizer y admite la configuración de la duración mínima, el movimiento permitido del dedo y el número de toques. El reconocedor pasa al estado UIGestureRecognizerStateBegan después de que expire el temporizador, luego a UIGestureRecognizerStateChanged cuando el dedo se mueve, y UIGestureRecognizerStateEnded al levantar el dedo.

swift
// UILongPressGestureRecognizer con configuración de duración mínima
class ContextMenuViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

        // Tiempo mínimo de pulsación: 0.5 segundos
        longPressRecognizer.minimumPressDuration = 0.5

        // Movimiento permitido del dedo: 10 puntos
        longPressRecognizer.allowableMovement = 10

        customView.addGestureRecognizer(longPressRecognizer)
    }

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

        // Creación de un menú contextual
        let location = recognizer.location(in: self.view)
        ContextMenuPresenter.show(at: location)
    }
}

Parámetros de configuración: minimumPressDuration — tiempo en segundos antes de la activación (por defecto 0.5, para accesibilidad se recomienda 0.65+); allowableMovement — movimiento máximo del dedo en puntos (por defecto 10, aumentarlo ayuda con manos temblorosas). iOS admite numberOfTouchesRequired para gestos multitáctiles (por ejemplo, pulsación larga con dos dedos). El reconocedor también se integra con UIContextMenuInteraction — cuando se agrega un menú contextual a una UIView mediante UIContextMenuConfiguration, Long Press invoca automáticamente el menú contextual sin implementación manual del gesto.

Long Press en Android: setOnLongClickListener

setOnLongClickListener es un método de View en el SDK de Android que establece un listener de pulsación larga. Cuando un usuario mantiene presionada una View durante más de 500 ms, el sistema llama a onLongClick(). El método devuelve un booleano — true significa que el evento fue manejado y no debe propagarse más, false significa que el evento puede ser manejado por otros listeners. Para un manejo más complejo (movimiento del dedo después de iniciar Long Press), se usa GestureDetector con OnGestureListener.

kotlin
// Ejemplo de setOnLongClickListener con retroalimentación táctil
val itemView: View = findViewById(R.id.itemView)

itemView.setOnLongClickListener {
    // Respuesta háptica para confirmar el inicio del gesto
    it.performHapticFeedback(
        HapticFeedbackConstants.LONG_PRESS
    )

    // Mostrar menú contextual en la posición del elemento
    val popup = PopupMenu(this, it)
    popup.menuInflater.inflate(R.menu.context_menu, popup.menu)
    popup.show()

    true // Evento manejado
}

GestureDetector proporciona un control más preciso sobre el gesto. A diferencia de setOnLongClickListener, GestureDetector notifica sobre el inicio (onLongPress), el movimiento (onScroll) y la liberación. Esto permite escenarios complejos — por ejemplo, iniciar un arrastre después de una pulsación larga (Drag-and-Drop). OnGestureListener requiere implementar seis métodos: onDown, onShowPress, onSingleTapUp, onScroll, onLongPress, onFling.

Dónde se utiliza la pulsación larga

Long Press se utiliza en decenas de escenarios de interfaces móviles. La aplicación más común es el menú contextual: pulsación larga en un contacto muestra opciones de comunicación (llamar, mensaje, correo), en un archivo — opciones (copiar, mover, eliminar), en texto — selección y portapapeles. El lanzador de Android usa la pulsación larga en un icono para mover aplicaciones y agregar widgets.

Selección de texto es un ejemplo clásico de Long Press en ambas plataformas. En iOS, pulsar prolongadamente sobre texto activa una lupa para posicionar el cursor; sobre una palabra — la selecciona con marcadores. En Android, la pulsación larga selecciona la palabra completa y muestra una barra de acciones (copiar, cortar, pegar). Ambas plataformas usan el arrastre posterior de los marcadores para expandir la selección.

Vista previa — en iOS, pulsar prolongadamente un enlace en Safari o un mensaje en Mail abre una vista previa del contenido (peek). En Android, un comportamiento similar se implementa mediante Long Press en una notificación (expande la notificación con botones de acción). Las aplicaciones de fotos usan la pulsación larga en una miniatura para una vista previa rápida de la imagen.

Drag-and-Drop a menudo se inicia con Long Press. El usuario mantiene presionado el elemento, el sistema cambia al modo de arrastre y el movimiento del dedo desplaza el elemento por la pantalla. Android admite este escenario mediante View.startDragAndDrop() después de Long Press. iOS usa UIDragInteraction, donde la interacción de arrastre requiere una pulsación larga para comenzar.

Recomendaciones para usar Long Press

Las guías de interfaz humana de ambas plataformas ofrecen recomendaciones claras: Long Press siempre debe ser una acción secundaria. Nunca hagas de la pulsación larga la única forma de realizar una función crítica. Los usuarios primero prueban Tap — si Tap no funciona como esperan, se frustran. Añade indicaciones visuales: los menús contextuales pueden indicarse con un icono de tres puntos, y los elementos que admiten Long Press, con una pista visual al tocar.

La retroalimentación táctil es obligatoria para Long Press. Cuando se reconoce el gesto, el dispositivo debe confirmarlo con una respuesta háptica: en iOS es UIImpactFeedbackGenerator con un impulso ligero, en Android — HapticFeedbackConstants.LONG_PRESS. Sin retroalimentación háptica, el usuario no está seguro de que el gesto se haya registrado y puede presionar de nuevo, causando acciones no deseadas.

RecomendacióniOSAndroid
Tiempo de espera de reconocimiento0.5–0.65 segundos500 ms (por defecto)
Retroalimentación táctilUIImpactFeedbackGeneratorHapticFeedbackConstants.LONG_PRESS
Retroalimentación visualMenú contextual, resaltadoPopupMenu, animación ripple
AccesibilidadVoiceOver + Custom ActionsTalkBack + AccessibilityNodeInfo
Movimiento máximo del dedoallowableMovement = 10 ptTouchSlop (~8 dp por defecto)
Conflicto con scrollcancelsTouchesInView = delayedonInterceptTouchEvent + LongPress

Accesibilidad: no todos los usuarios pueden realizar una pulsación larga (personas con problemas motores, usuarios mayores). Proporciona siempre una forma alternativa de acceder a las acciones de Long Press — por ejemplo, mediante un botón "Más" en la interfaz o mediante funciones de accesibilidad del sistema (VoiceOver en iOS, TalkBack en Android). Para iOS, puedes añadir Custom Actions mediante UIAccessibilityCustomAction, que están disponibles a través del rotor de VoiceOver.

Preguntas frecuentes

¿Cuál es el tiempo estándar de pulsación para Long Press?

El tiempo estándar para Long Press es de 0,5 segundos (500 ms) en ambas plataformas. iOS permite configurar minimumPressDuration de 0.3 a 1.0 segundos. Android usa un tiempo de espera fijo de 500 ms para View.setOnLongClickListener. Para usuarios con habilidades motoras limitadas, se recomienda aumentar el tiempo de espera a 0,8–1,0 segundos.

¿Cuál es la diferencia entre Long Press y 3D Touch?

Long Press se reconoce por el tiempo de pulsación (0,5 s), 3D Touch — por la fuerza de presión (gramos de fuerza). 3D Touch solo está disponible en iPhone 6S–XR (tecnología Force Touch por hardware). A partir de iOS 13, Apple reemplazó 3D Touch por Haptic Touch — una simulación por software que funciona mediante Long Press con retroalimentación táctil. Haptic Touch está disponible en todos los iPhone y iPad modernos.

¿Cómo evitar el conflicto de Long Press con el scroll (ScrollView)?

El conflicto entre Long Press y el scroll es un problema común. Solución: establece delaysTouchesBegan = true para el reconocedor de gestos en iOS (el sistema no envía touchesBegan inmediatamente, sino que espera el reconocimiento del gesto). En Android, usa onInterceptTouchEvent devolviendo false para Long Press. Si el usuario comienza a mover el dedo antes del tiempo de espera, el gesto se cancela a favor del scroll.

¿Se puede usar Long Press en aplicaciones web (PWA)?

Sí, Long Press es compatible con aplicaciones web mediante el evento touchstart/touchend con medición de tiempo. Los navegadores modernos también admiten el evento contextmenu, que se activa con pulsación larga en dispositivos móviles. Para compatibilidad entre navegadores, usa bibliotecas como hammer.js o implementa un reconocedor personalizado mediante setInterval en el manejador de touchstart.

¿Cómo agregar retroalimentación táctil para Long Press en iOS?

En iOS, la retroalimentación táctil se agrega mediante UIImpactFeedbackGenerator. Llama a impactOccurred() cuando UILongPressGestureRecognizer transicione al estado began. Para una respuesta ligera, usa UIImpactFeedbackGenerator(style: .light). Para una más notable — .medium. Para menús contextuales, iOS agrega automáticamente retroalimentación táctil mediante UIContextMenuInteraction sin código adicional.

Resumen

  • Long Press — gesto de mantener el dedo en la pantalla durante 0,5–1 segundo para invocar acciones secundarias
  • Diferencia de Tap — Tap es instantáneo (acción principal), Long Press requiere tiempo de espera (acción secundaria)
  • API de iOS — UILongPressGestureRecognizer con parámetros minimumPressDuration y allowableMovement
  • API de Android — View.setOnLongClickListener y GestureDetector.OnGestureListener
  • Usos — menús contextuales, selección de texto, vista previa, inicio de Drag-and-Drop
  • Retroalimentación táctil — obligatoria para confirmar al usuario el reconocimiento del gesto
  • Accesibilidad — proporciona siempre acceso alternativo a las acciones de Long Press

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también