Saltare al contenuto principale
@capgo/capacitor-interazione di testo Sistema e interfaccia utente Sorgente aperta

Interazione di testo plugin Capacitor

Disabilitare la selezione del testo e il rilevamento del lente di ingrandimento di iOS nel WebView Capacitor quando il tuo app deve sentire nativo, quindi riattivarlo prima che l'utente debba digitare.

  • iOS · Supportato (iOS 14.5+)
  • Android · Non supportato (risolve successo: false)
  • Web · Non supportato (lancia un'eccezione non implementata)

Installazione

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

Guida

Come utilizzare l'interazione di testo in Capacitor

Testa sul dispositivo

Scarica l'app Capgo, poi scansione il QR code.

Anteprima del plugin di interazione testuale QR code

Disabilita la selezione del testo e la lente di ingrandimento in Capacitor le app iOS

@capgo/capacitor-textinteraction Gli dà un solo modo per attivare o disattivare l'interazione del testo per il Capacitor WebView su iOS. Quando è spento, premendo a lungo il testo non lo seleziona più, non mostra la chiamata di copia o porta in evidenza la lente di ingrandimento reintrodotta da iOS 15. La tua app web non sente più come una pagina web all'interno di un guscio nativo.

Sotto la cappa il plugin imposta WKPreferences.isTextInteractionEnabled su l'applicazione WKWebView. Non cambia nulla d'altro.

Quando usarla

  • Giochi, kioschi e app di disegno Non selezionare mai il testo con gesti di pressione prolungata e trascinamento.
  • Menu di lungo premere personalizzati si scontrano con i maniglioni di selezione nativi e con il callout.
  • Giocatori di media, mappe e caroselli ove un lento scorrimento accidentalmente attiva la lente di ingrandimento.
  • Interfaccia utente personalizzata, simile a un'applicazione dove i pulsanti e le etichette selezionabili rompono l'aspetto nativo.

Mantieni l'interazione testuale abilitata per le schermate dove gli utenti leggono contenuti lunghi che potrebbero voler copiare, o dove devono compilare formulari.

Installa

bun add @capgo/capacitor-textinteraction
bunx cap sync

No Info.plist chiavi, autorizzazioni o capacitor.config.ts chiavi, autorizzazioni o

vengono richieste. Versione di Capacitor Maintained
v8.x v8.x Sì
v7.x v7.x A richiesta
v6.x e precedenti v6.x e precedenti No

Disabilita l'interazione testuale all'avvio dell'app

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');
}

Passa sempre enabled esplicitamente. Il lato nativo considera un valore mancante come false.

Riabilitalo prima che gli utenti inizino a digitare

Mentre l'interazione testuale è disabilitata, <input>, <textarea> Ecco contenteditable I dispositivi smettono di accettare l'input. Attivalo per qualsiasi schermo con un form, poi disattivalo quando l'utente esce.

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, chiama setTextInteraction(true) all'interno dell'hook di ingresso delle rotte che contengono input (ad esempio Vue Router beforeEnter, un React useEffect, o Angular ionViewWillEnter) and setTextInteraction(false) Plugin vs CSS

Plugin vs CSS

You can hide most selection with CSS:

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

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

CSS works per element, so anything you forget stays selectable, and it does not change how the WebView itself handles long-press. The plugin works at the WebView level: one call covers every screen, including the magnifier lens. Many apps use both: the plugin for app-like screens and CSS for fine control inside screens where text interaction stays on.

Riferimento API

toggle(options)

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

Abilita o disabilita l'interazione di testo per il WebView Capacitor.

  • enabled: true ripristina la selezione, il callout e la lente di ingrandimento. false li disabilita.
  • success: true quando il cambiamento è stato applicato (iOS 14.5+ con un WebView disponibile). false su Android e quando non è disponibile alcun WebView.

getPluginVersion()

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

Restituisce la versione del plugin nativo. Restituisce web in browser.

Comportamento della piattaforma

Piattaforma Comportamento
iOS 14.5+ Imposta isTextInteractionEnabled On il WKWebViewSi applica a tutte le pagine fino a quando non viene riattivato.
Android Nessuna azione. Risolve { success: false }. Utilizza CSS se hai bisogno di limitare la selezione.
Web toggle Lancia un errore non implementato. Le chiamate di guardia con Capacitor.getPlatform().

Troubleshooting

  • Istanze di input non funzionano più. Il testo interattivo è ancora disabilitato. Chiamare toggle({ enabled: true }) Prima che la form sia mostrata.
  • Niente cambia su Android. Come previsto. Il plugin supporta solo iOS.
  • TextInteraction.toggle is not available on web. La chiamata è stata eseguita nel browser o durante lo sviluppo in un browser desktop. Avvolgila in un controllo di piattaforma.
  • La selezione torna dopo il riavvio dell'applicazione. Ogni avvio crea una nuova WebView con l'interazione di testo abilitata. Chiamalo toggle({ enabled: false }) durante l'avvio.

Invia il cambiamento senza una revisione dell'App Store

L'interazione di testo è JavaScript. Una volta che il plugin è nella tua build nativa, puoi cambiare dove e quando esegue con un Capgo live update invece di aspettare la revisione dell'App Store.

Riferimento completo

FAQ

Faq del plugin di interazione di testo

Come disabilitare la selezione del testo in un'app iOS Capacitor?

Installa @capgo/capacitor-textinteraction, esegui bunx cap sync, quindi chiama TextInteraction.toggle({ enabled: false }). Il plugin imposta isTextInteractionEnabled a false sul WKWebView, che disabilita la selezione del testo e la lente di ingrandimento per l'intero WebView.

Perché il CSS user-select: none non è sufficiente su iOS?

user-select e -webkit-touch-callout bloccano la maggior parte della selezione del contenuto della pagina, ma il WKWebView può ancora mostrare la lente di ingrandimento e il comportamento di selezione al momento del lungo-tasto, e ogni elemento che dimentichi di stilizzare rimane selezionabile. Il plugin interrompe l'interazione del testo a livello di WebView, quindi un'unica chiamata copre ogni schermo.

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

No. Mentre l'interazione del testo è disabilitata, i campi di input, le aree di testo e gli elementi contenteditable smettono di funzionare. Chiama TextInteraction.toggle({ enabled: true }) prima di mostrare un form o un campo di ricerca, e disabilita di nuovo quando l'utente lascia quella schermata.

Funziona il plugin su Android o nel web?

No. L'interazione di testo è abilitata solo su iOS. Su Android, la chiamata risolve con successo impostato su false e non cambia nulla. Sul web, la chiamata lancia un errore non implementato, quindi proteggi con Capacitor.getPlatform() === &quot;ios&quot;.

Quali versioni di iOS e Capacitor sono supportate?

La versione nativa di API richiede iOS 14.5 o successiva. Le versioni maggiori del plugin seguono Capacitor: utilizza il plugin v8 con Capacitor 8 e il plugin v7 con Capacitor 7.

La configurazione persiste dopo il riavvio dell'app?

Il setting vive nella configurazione WebView, quindi rimane in vigore durante le navigazioni di pagina fino a quando non chiami di nuovo toggle. Un lancio di app fresco crea un nuovo WebView con l'interazione di testo abilitata, quindi chiama di nuovo toggle all'avvio se vuoi che sia disabilitata di default.

Come posso installare il plugin di interazione di testo in un'app Capacitor?

Esegui &quot;bun add @capgo/capacitor-textinteraction&quot; (o &quot;npm install @capgo/capacitor-textinteraction&quot;), quindi esegui &quot;bunx cap sync&quot; affinché i progetti iOS e Android recuperino la versione nativa di code. Importalo da &quot;@capgo/capacitor-textinteraction&quot; nella tua app code.

Funziona @capgo/capacitor-textinteraction con React, Vue e Angular?

Sì. L'interazione di testo è un pacchetto Capacitor, quindi funziona con qualsiasi framework web che esegue all'interno di Capacitor, compresi Ionic, React, Vue, Angular, Svelte e JavaScript puro.

Quali versioni di Capacitor supporta @capgo/capacitor-textinteraction?

Capgo plugin seguono la versione maggiore di Capacitor: utilizza la versione maggiore del plugin che corrisponde alla tua versione maggiore di Capacitor (ad esempio plugin v8 con Capacitor 8). La tabella di compatibilità nella GitHub README elenca le versioni mantenute.

È @capgo/capacitor-textinteraction gratuito e open source?

Sì. Il codice sorgente di code è pubblico su GitHub in https://github.com/Cap-go/capacitor-textinteraction/ e il pacchetto è gratuito per l'installazione da npm. I rapporti di bug e le richieste di pull sono graditi.

Posso aggiornare code che utilizza Text Interaction senza una revisione dell'App Store?

L'installazione o l'aggiornamento del plugin modifica il code nativo, quindi richiede una nuova costruzione del negozio. Dopo di che, le modifiche JavaScript, HTML e CSS che chiamano il plugin possono essere spedite istantaneamente con Capgo aggiornamenti live.

Invia le modifiche di Text Interaction senza aspettare la revisione dell'app

Una volta che il plugin è nella tua build di store, le Capgo aggiornamenti live inviano le tue modifiche JavaScript, HTML e CSS agli utenti in pochi minuti.

Inizia con Capgo