Pulsa para ir al contenido principal
@capgo/capacitor-interacción-de-texto Interfaz & Sistema De código abierto

Interacción de texto plugin de Capacitor

Desactivar la selección de texto y el lente de aumento de iOS en el navegador Capacitor WebView cuando su aplicación debe sentirse nativa, y volver a activarlo antes de que el usuario necesite escribir.

  • iOS · Soportado (iOS 14.5+)
  • Android · No soportado (resuelve éxito: false)
  • Web · No soportado (lanza unimplemented)

Instalar

bun add @capgo/capacitor-textinteraction bunx cap sync
pnpm o yarn npm
  • npm install @capgo/capacitor-textinteraction
  • pnpm add @capgo/capacitor-textinteraction
  • yarn add @capgo/capacitor-textinteraction

Guía

Cómo usar la Interacción de Texto en Capacitor

Probar en dispositivo

Descargue la aplicación Capgo, luego escane el código QR code.

Text Interaction plugin preview QR code

Deshabilitar la selección de texto y el lente de aumento en aplicaciones de iOS Capacitor

@capgo/capacitor-textinteraction te da una llamada para activar o desactivar la interacción de texto en el WebView de iOS Capacitor. Cuando está desactivado, el texto ya no se selecciona al hacer clic largo, no muestra el llamado de copia ni activa el lente de aumento que iOS 15 reintrodujo. Tu aplicación web deja de sentirse como una página web dentro de una caja nativa.

Bajo la capota, el plugin establece WKPreferences.isTextInteractionEnabled en la aplicación's WKWebView. No cambia nada más.

Cuándo usarlo

  • Juegos, kioscos y aplicaciones de dibujo donde las gesturas de clic largo y arrastrar nunca deben seleccionar texto.
  • Menús de presionar durante mucho tiempo personalizados que se chocan con los controles de selección nativos y el llamado.
  • Reproductores de medios, mapas y carousels dónde un deslizamiento lento accidentalmente activa el lupa.
  • Interfaz de usuario de aplicación personalizada dónde los etiquetas y botones seleccionables rompen el sentir nativo.

Mantener la interacción de texto habilitada para pantallas donde los usuarios lean contenido largo que pueden querer copiar, o donde llenen formularios.

Instalar

bun add @capgo/capacitor-textinteraction
bunx cap sync

No Info.plist no se necesitan claves, permisos o capacitor.config.ts Se necesitan entradas.

Versión del plugin Capacitor versión Mantenido
v8.x v8.x Sí
v7.x v7.x A demanda
v6.x y anteriores v6.x y anteriores No

Disable text interaction on app start

import { Capacitor } from '@capacitor/core';
import { TextInteraction } from '@capgo/capacitor-textinteraction';

if (Capacitor.getPlatform() === 'ios') {
  const { success } = await TextInteraction.toggle({ enabled: false });
  if (!success) console.warn('Text interaction could not be changed on this device');
}

Siempre pasa enabled explicitamente. El lado nativo trata un valor faltante como false.

Reactivarlo antes de que los usuarios escriban

Mientras la interacción de texto está desactivada, <input>, <textarea> y contenteditable Los elementos dejan de aceptar entrada. Vuelve a activarlo en cualquier pantalla con un formulario, luego vuelve a desactivarlo cuando el usuario se vaya.

import { Capacitor } from '@capacitor/core';
import { TextInteraction } from '@capgo/capacitor-textinteraction';

const isIos = Capacitor.getPlatform() === 'ios';

export async function setTextInteraction(enabled: boolean) {
  if (!isIos) return false;
  const { success } = await TextInteraction.toggle({ enabled });
  return success;
}

// Entering a login, search or checkout screen
await setTextInteraction(true);

// Leaving it
await setTextInteraction(false);

Con un router, llamar setTextInteraction(true) en el hook de entrada de rutas que contienen inputs (por ejemplo, Vue Router) beforeEnter,a React useEffect, un React ionViewWillEnter, o Angular setTextInteraction(false) ) y cuando se dejen de usarlos.

Plugin vs CSS

Tú puedes ocultar la mayoría de la selección con CSS:

body {
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
}

input,
textarea,
[contenteditable] {
  -webkit-user-select: text;
  user-select: text;
}

CSS funciona por elemento, por lo que cualquier cosa que olvides sigue siendo seleccionable, y no cambia cómo el navegador WebView maneja el largo presionado. El plugin funciona a nivel de WebView: una llamada cubre toda la pantalla, incluido el lente de aumento. Muchas aplicaciones utilizan ambos: el plugin para pantallas de tipo aplicación y CSS para un control fino dentro de pantallas donde la interacción de texto permanece.

API referencia

toggle(options)

toggle(options: { enabled: boolean }): Promise<{ success: boolean }>

Activa o desactiva la interacción de texto para el WebView Capacitor.

  • enabled: true restaura la selección, el llamado y el lente de aumento. false los desactiva.
  • success: true cuando se aplicó el cambio (iOS 14.5+ con un WebView disponible). false en Android y cuando no está disponible el WebView.

getPluginVersion()

getPluginVersion(): Promise<{ version: string }>

Devuelve la versión nativa del plugin. Devuelve web en el navegador.

Comportamiento de la plataforma

Plataforma Comportamiento
iOS 14.5+ Establece isTextInteractionEnabled en el WKWebViewAplica a todas las páginas hasta que se active de nuevo.
Android No-op. Resuelve { success: false }. Utilice CSS si necesita limitar la selección.
Web toggle lanza un error no implementado. Las llamadas de guardia incluyen Capacitor.getPlatform().

Ayuda con problemas

  • Los campos dejaron de funcionar. La interacción de texto sigue deshabilitada. Llame toggle({ enabled: true }) antes de mostrar el formulario.
  • Nothing cambia en Android. Esperado. El plugin solo admite iOS.
  • TextInteraction.toggle is not available on web. La llamada se ejecutó en el navegador o durante el desarrollo en un navegador de escritorio. Envuélvela en una comprobación de plataforma.
  • La selección vuelve después de reiniciar la aplicación. Cada lanzamiento crea una nueva WebView con la interacción de texto habilitada. Llame toggle({ enabled: false }) durante el arranque.

Envía el cambio sin revisión de la tienda App Store

Activar la interacción de texto es JavaScript. Una vez que el plugin está en tu compilación nativa, puedes cambiar dónde y cuándo se ejecuta con un Capgo live update en lugar de esperar a la revisión de la tienda App Store.

Referencia completa

FAQ

Preguntas frecuentes del plugin de interacción de texto

¿Cómo desactivo la selección de texto en una aplicación de iOS Capacitor?

Instale @capgo/capacitor-textinteraction, ejecute bunx cap sync, luego llame a TextInteraction.toggle({ enabled: false }). El complemento establece isTextInteractionEnabled en false en el WKWebView, lo que desactiva la selección de texto y el lente de aumento para todo el WebView.

¿Por qué el CSS user-select: none no es suficiente en iOS?

El usuario-select y -webkit-touch-callout detienen la mayoría de las selecciones en el contenido de la página, pero el WKWebView puede mostrar el lente de ampliación y el comportamiento de selección al hacer clic largo, y cada elemento que olvides estilizar sigue siendo seleccionable. El plugin desactiva la interacción de texto a nivel de WebView, por lo que un llamado cubre todas las pantallas.

Can users still type in inputs while text interaction is disabled?

No. Mientras la interacción de texto está desactivada, los campos de texto, áreas de texto y elementos contenteditable dejan de funcionar. Llame a TextInteraction.toggle({ enabled: true }) antes de mostrar un formulario o un campo de búsqueda, y desactive de nuevo cuando el usuario deje esa pantalla.

¿Funciona el plugin en Android o en la web?

No. La interacción de texto se puede cambiar solo en iOS. En Android, la llamada resuelve con éxito establecido en falso y no hace nada. En la web, la llamada lanza un error no implementado, por lo que guárdela con Capacitor.getPlatform() === &quot;ios&quot;.

¿Qué versiones de iOS y Capacitor son compatibles?

La versión nativa de API necesita iOS 14.5 o posterior. Las versiones principales del plugin siguen Capacitor: utilice el plugin v8 con Capacitor 8 y el plugin v7 con Capacitor 7.

¿Se mantiene el ajuste después de reiniciar la aplicación?

El ajuste vive en la configuración de WebView, por lo que permanece en efecto durante las navegaciones de página hasta que vuelva a llamar a toggle. Un lanzamiento de aplicación fresco crea un nuevo WebView con la interacción de texto habilitada, por lo que vuelva a llamar a toggle en el arranque si desea que esté desactivado por defecto.

¿Cómo puedo instalar el plugin de interacción de texto en una aplicación Capacitor?

Run &quot;bun add @capgo/capacitor-textinteraction&quot; (o &quot;npm install @capgo/capacitor-textinteraction&quot;), luego ejecuta &quot;bunx cap sync&quot; para que los proyectos iOS y Android capturen el nativo code. Importa desde &quot;@capgo/capacitor-textinteraction&quot; en tu app code.

¿Funciona @capgo/capacitor-textinteraction con React, Vue y Angular?

Sí. Text Interaction es un paquete Capacitor, por lo que funciona con cualquier framework web que se ejecute dentro de Capacitor, incluyendo Ionic, React, Vue, Angular, Svelte y JavaScript puro.

¿Qué versión de Capacitor admite @capgo/capacitor-textinteraction?

Los plugins Capgo siguen la versión mayor de Capacitor: utiliza la versión mayor del plugin que coincida con la versión mayor de Capacitor (por ejemplo, plugin v8 con Capacitor 8). La tabla de compatibilidad en el README del GitHub lista las versiones mantenidas.

¿Es @capgo/capacitor-textinteraction gratuito y de código abierto?

Sí. El código fuente code está público en GitHub en https://github.com/Cap-go/capacitor-textinteraction/ y el paquete es gratuito para instalar desde npm. Se aceptan informes de errores y solicitudes de extracción.

Puedo actualizar code que utiliza Text Interaction sin una revisión de la Tienda?

Instalar o actualizar el plugin cambia el nativo code, por lo que necesita una nueva compilación de la tienda. Después de eso, los cambios de JavaScript, HTML y CSS que llaman al plugin pueden enviar instantáneamente con Capgo actualizaciones en vivo.

Envíe cambios en Text Interaction sin esperar a la revisión de la aplicación

Una vez que el plugin esté en tu tienda de construcción, Capgo actualizaciones en vivo envían los cambios de JavaScript, HTML y CSS a los usuarios en minutos.

Inicie con Capgo