Empezando
Instalación
Section titled “Instalación”npm install @capgo/capacitor-textinteractionnpx cap syncyarn add @capgo/capacitor-textinteractionnpx cap syncpnpm add @capgo/capacitor-textinteractionnpx cap syncbun add @capgo/capacitor-textinteractionnpx cap syncSoporte de plataforma
Section titled “Soporte de plataforma”- iOS: iOS 15.0+ (requiere UITextInteraction API)
- Android: No operativo (devoluciones no admitidas)
- Web: No operativo (devoluciones no admitidas)
Ejemplo de uso
Section titled “Ejemplo de uso”import { TextInteraction } from '@capgo/capacitor-textinteraction';
// Disable text interaction (remove magnifier/loupe)const result = await TextInteraction.setEnabled({ enabled: false });
if (result.success) { console.log('Text interaction disabled');} else { console.log('Not supported on this platform');}
// Re-enable text interaction before showing text inputsawait TextInteraction.setEnabled({ enabled: true });API Referencia
Section titled “API Referencia”setEnabled(opciones)
Section titled “setEnabled(opciones)”setEnabled(options: { enabled: boolean }) => Promise<{ success: boolean }>Habilite o deshabilite la interacción de texto iOS (lente de lupa y controladores de selección).
| Parámetro | Tipo |
|---|---|
options | { enabled: boolean } |
Devoluciones: Promise<{ success: boolean }>
- Devuelve
{ success: true }si la operación fue exitosa (iOS 15+) - Devuelve
{ success: false }si no es compatible (Android, Web o iOS < 15)
Casos de uso prácticos
Section titled “Casos de uso prácticos”Aplicaciones de quiosco
Section titled “Aplicaciones de quiosco”Deshabilite la interacción de texto en el modo quiosco para evitar que los usuarios accedan a los menús de copiar y pegar:
import { TextInteraction } from '@capgo/capacitor-textinteraction';
async function enterKioskMode() { // Disable text interaction in kiosk mode const result = await TextInteraction.setEnabled({ enabled: false });
if (result.success) { console.log('Kiosk mode: Text interaction disabled'); }}
async function exitKioskMode() { // Re-enable text interaction when exiting kiosk mode await TextInteraction.setEnabled({ enabled: true }); console.log('Kiosk mode: Text interaction enabled');}Experiencias de juego
Section titled “Experiencias de juego”Retire la lente de aumento durante el juego y restáurela para ingresar texto:
import { TextInteraction } from '@capgo/capacitor-textinteraction';
class GameController { async startGame() { // Disable text interaction during gameplay await TextInteraction.setEnabled({ enabled: false }); console.log('Game started - text interaction disabled'); }
async showTextInput() { // Enable text interaction before showing input await TextInteraction.setEnabled({ enabled: true }); console.log('Text input ready - interaction enabled');
// Show input field this.displayInputField(); }
async hideTextInput() { // Hide input and disable interaction again this.hideInputField(); await TextInteraction.setEnabled({ enabled: false }); }}Instalaciones interactivas
Section titled “Instalaciones interactivas”Controle la interacción de texto para señalización digital y pantallas interactivas:
import { TextInteraction } from '@capgo/capacitor-textinteraction';
async function setupInteractiveDisplay() { // Disable text interaction for display mode await TextInteraction.setEnabled({ enabled: false });
// Set up touch handlers for display interaction document.addEventListener('touchstart', handleDisplayTouch);}
async function enableUserInput() { // Enable text interaction when user needs to input data const result = await TextInteraction.setEnabled({ enabled: true });
if (result.success) { showInputForm(); } else { // Fallback for unsupported platforms showInputFormWithoutTextInteraction(); }}Gestión de formularios
Section titled “Gestión de formularios”Alternar interacción de texto según el estado del formulario:
import { TextInteraction } from '@capgo/capacitor-textinteraction';
class FormManager { private textInteractionEnabled = true;
async disableTextSelection() { const result = await TextInteraction.setEnabled({ enabled: false }); this.textInteractionEnabled = false; return result.success; }
async enableTextSelection() { const result = await TextInteraction.setEnabled({ enabled: true }); this.textInteractionEnabled = true; return result.success; }
async onFormFocus() { // Always enable before showing keyboard await this.enableTextSelection(); }
async onFormBlur() { // Optionally disable after input is complete await this.disableTextSelection(); }}Interacción de texto condicional
Section titled “Interacción de texto condicional”Control de interacción de texto compatible con la plataforma:
import { TextInteraction } from '@capgo/capacitor-textinteraction';import { Capacitor } from '@capacitor/core';
async function toggleTextInteraction(enabled: boolean) { // Only attempt on iOS if (Capacitor.getPlatform() === 'ios') { const result = await TextInteraction.setEnabled({ enabled });
if (result.success) { console.log(`Text interaction ${enabled ? 'enabled' : 'disabled'}`); } else { console.log('Text interaction not supported on this iOS version'); } } else { console.log('Text interaction control only available on iOS'); }}
// Usageawait toggleTextInteraction(false); // Disableawait toggleTextInteraction(true); // EnableMejores prácticas
Section titled “Mejores prácticas”- Always re-enable before text input: Disable text interaction when needed, but always re-enable it before showing text input fields or keyboards
- Compruebe la compatibilidad con la plataforma: verifique que
result.successmaneje correctamente las plataformas no compatibles - Característica específica de iOS: este complemento es exclusivo de iOS; implementar alternativas para Android y Web
- Experiencia de usuario: considere las implicaciones de UX al deshabilitar la interacción de texto
- Gestión de estado: seguimiento del estado habilitado/deshabilitado para evitar llamadas redundantes
Recordatorios importantes
Section titled “Recordatorios importantes”-
Re-enable for text inputs: Always call
setEnabled({ enabled: true })before showing text input fields, otherwise users won’t be able to properly select or edit text -
Detección de plataforma: el complemento devuelve
{ success: false }en las versiones Android, web y iOS inferiores a 15.0. -
No visual feedback: Disabling text interaction removes the magnifier but doesn’t provide visual feedback - implement your own UI indicators if needed
-
Valores predeterminados seguros: el sistema de interacción de texto está habilitado de forma predeterminada, coincidiendo con el comportamiento estándar de iOS
Limitaciones
Section titled “Limitaciones”- iOS 15.0+ únicamente (requiere UITextInteraction API)
- Sin efecto en Android o plataformas web
- No se puede desactivar selectivamente sólo la lupa o sólo los controladores de selección.
- No hay devolución de llamada cuando los usuarios intentan utilizar funciones deshabilitadas
Casos de uso- Aplicaciones de quiosco: evita copiar y pegar en instalaciones controladas
Section titled “Casos de uso- Aplicaciones de quiosco: evita copiar y pegar en instalaciones controladas”- Experiencias de juego: elimina la lupa durante el juego
- Pantallas interactivas: controla la interacción del texto en la señalización digital
- Custom text editors: Build specialized text editing experiences
- Seguridad: evita la selección de texto en áreas sensibles
Solución de problemas
Section titled “Solución de problemas”Interacción de texto no deshabilitada
Section titled “Interacción de texto no deshabilitada”- Verifique que la versión iOS sea 15.0 o superior
- Verifique que
result.successdevuelvatrue - Asegúrese de que ningún otro código vuelva a habilitar la interacción de texto
Los usuarios no pueden editar el texto
Section titled “Los usuarios no pueden editar el texto”- Make sure you called
setEnabled({ enabled: true })before showing text inputs - Verify the enable call succeeded by checking
result.success - Test on actual iOS device (not just simulator)