Allez directement au contenu principal
@capgo/capacitor-interaction-texte Système et interface utilisateur Source ouvert

Interaction de texte plugin Capacitor

Turn text selection and the iOS magnifier lens off in the Capacitor WebView when your app should feel native, then turn it back on before the user needs to type.

  • iOS · Soutenu (iOS 14.5+)
  • Android · Non pris en charge (résout success: false)
  • Web · Non pris en charge (lance unimplemented)

Installer

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

Guide

Comment utiliser l'interaction texte dans Capacitor

Testez sur appareil

Téléchargez l'application Capgo, puis scannez le QR code.

Prévisualisation du plugin d'interaction texte QR code

Empêchez la sélection de texte et la loupe dans les applications iOS Capacitor

@capgo/capacitor-textinteraction Cela vous donne un appel pour activer ou désactiver l'interaction de texte pour la vue Web Capacitor sur iOS. Lorsqu'il est désactivé, la sélection de texte en appuyant longuement ne sélectionne plus le texte, ne montre pas l'appel à la copie ou n'ouvre pas la loupe que iOS 15 a réintroduit. Votre application web cesse de ressembler à une page web à l'intérieur d'un shell natif.

En dessous de la carrosserie, le plugin définit WKPreferences.isTextInteractionEnabled sur l'application's WKWebView. Il ne change rien d'autre.

Quand l'utiliser

  • Jeux, kiosques et applications de dessin N'importe quelle pression prolongée et glisser-déposer ne doit pas sélectionner du texte.
  • Les menus de long-press personnalisés qui entrent en conflit avec les manettes de sélection natives et l'appel.
  • Media players, maps and carousels où un swipe lent déclenche par hasard la loupe.
  • Interface utilisateur personnalisée, comme une application où les étiquettes et les boutons sélectionnables détruisent le sentiment natif.

Conservez l'interaction texte activée sur les écrans où les utilisateurs lisent du contenu long qu'ils pourraient vouloir copier, ou où ils remplissent des formulaires.

Installer

bun add @capgo/capacitor-textinteraction
bunx cap sync

Non Info.plist Aucune clé, aucune autorisation ou capacitor.config.ts aucun enregistrement n'est nécessaire.

Version du plugin Capacitor version Entretenu
v8.x v8.x Oui
v7.x v7.x Sur demande
v6.x et plus anciens v6.x et plus anciens Non

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

Passer toujours enabled explicitement. Le côté natif considère une valeur manquante comme false.

Réactivez-l’avant que les utilisateurs ne tapent

Alors que l'interaction texte est désactivée, <input>, <textarea> et contenteditable Les éléments cesse de recevoir des entrées. Activez-l’à nouveau pour tout écran contenant un formulaire, puis éteignez-le lorsque l'utilisateur quitte.

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

Avec un routeur, appelez setTextInteraction(true) dans le crochet d'entrée des routes contenant des entrées (par exemple Vue Router beforeEnter, un React useEffect, ou Angular ionViewWillEnter) et setTextInteraction(false) lorsqu'ils quittent.

Plugin vs CSS

Vous pouvez cacher la plupart des sélections avec CSS :

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

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

CSS fonctionne par élément, donc tout ce que vous oubliez reste sélectionnable, et cela ne change pas la façon dont le WebView gère les longs appuis. Le plugin fonctionne au niveau du WebView : une seule mise en œuvre couvre tout l'écran, y compris le loupeur.

API référence

toggle(options)

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

Active ou désactive l'interaction avec le texte pour la vue Capacitor.

  • enabled: true restaure la sélection, l'appel à l'attention et le loupe. false les désactive.
  • success: true lorsque la modification a été appliquée (iOS 14.5+ avec une vue disponible). false sur Android et lorsque aucune vue n'est disponible.

getPluginVersion()

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

Renvoie la version native du plugin. Renvoie web Comportement de la plateforme

Comportement de la plateforme

Comportement iOS 14.5+
Définit Sets isTextInteractionEnabled sur le WKWebViewS'applique à toutes les pages jusqu'à ce que vous la réactiviez.
Android Rien à faire. Résout { success: false }. Utilisez CSS si vous devez limiter la sélection.
Web toggle Lance une erreur non implémentée. Les appels de garde avec Capacitor.getPlatform().

Troubleshooting

  • Les entrées ne fonctionnent plus. Les entrées ne fonctionnent plus. toggle({ enabled: true }) avant que le formulaire soit affiché.
  • avant de montrer le formulaire. Attendu. Le plugin ne prend en charge que l'iOS.
  • TextInteraction.toggle is not available on web. La fonctionnalité a été exécutée dans le navigateur ou en développement dans un navigateur de bureau. Vérifiez la plateforme avant d'y accéder.
  • La sélection est rétablie après redémarrage de l'application. Chaque lancement crée une nouvelle vue Web avec l'interaction avec le texte activée. Appelez-le toggle({ enabled: false }) dans le démarrage.

Envoyez la mise à jour sans passer par la revue de l'App Store

Une fois le plugin intégré à votre build natif, vous pouvez modifier où et quand il s'exécute avec un Capgo live update au lieu d'attendre la revue de l'App Store.

Référence complète

FAQ

FAQ du plugin Text Interaction

Comment désactiver la sélection de texte dans une application iOS Capacitor ?

Installez @capgo/capacitor-textinteraction, exécutez bunx cap sync, puis appelez TextInteraction.toggle({ enabled: false }). Le plugin défini isTextInteractionEnabled sur false sur le WKWebView, ce qui éteint la sélection de texte et la loupe pour le tout le WebView.

Pourquoi le CSS user-select : none n'est-il pas suffisant sur iOS ?

user-select et -webkit-touch-callout arrêtent la plupart de la sélection dans le contenu de la page, mais le WKWebView peut toujours afficher la loupe et le comportement de sélection lors d'un long appui, et chaque élément que vous oubliez de styliser reste sélectionnable. Le plugin éteint la sélection de texte au niveau du WebView, donc une seule appelle couvre tout l'écran.

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

Non. Alors que la sélection de texte est désactivée, les champs de saisie, les zones de texte et les éléments éditables ne fonctionnent plus. Appelez TextInteraction.toggle({ enabled: true }) avant de montrer un formulaire ou un champ de recherche, et désactivez-l’à nouveau lorsque l'utilisateur quitte cette page.

Le plugin fonctionne-t-il sur Android ou sur le web ?

No. L'interaction texte est uniquement disponible sur iOS. Sur Android, l'appel se termine avec succès défini sur faux et ne change rien. Sur le web, l'appel lance une erreur non implémentée, il faut donc la protéger avec Capacitor.getPlatform() === &quot;ios&quot;.

Quels versions d'iOS et Capacitor sont pris en charge ?

La version native de API nécessite iOS 14.5 ou ultérieur. Les versions majeures du plugin suivent Capacitor: utilisez le plugin v8 avec Capacitor 8 et le plugin v7 avec Capacitor 7.

La mise en œuvre persiste-t-elle après le redémarrage de l'application ?

La mise en œuvre vit dans la configuration de la vue Web, elle reste donc en vigueur pendant les navigations de page jusqu'à ce que vous appelez à nouveau la fonction toggle. Un lancement de l'application frais crée une nouvelle vue Web avec l'interaction texte activée, appelez donc à nouveau la fonction toggle au démarrage si vous voulez qu'elle soit désactivée par défaut.

Comment installez-vous le plugin d'interaction texte dans une application Capacitor ?

Exécutez &quot;bun add @capgo/capacitor-textinteraction&quot; (ou &quot;npm install @capgo/capacitor-textinteraction&quot;), puis exécutez &quot;bunx cap sync&quot; afin que les projets iOS et Android prennent en compte la version native de code. Importez-l’à partir de &quot;@capgo/capacitor-textinteraction&quot; dans votre application code.

Le package @capgo/capacitor-textinteraction fonctionne-t-il avec React, Vue et Angular ?

Oui. L'interaction texte est un package Capacitor, il fonctionne donc avec tout framework web qui s'exécute à l'intérieur de Capacitor, y compris Ionic, React, Vue, Angular, Svelte et JavaScript pur.

Quelle version de Capacitor est prise en charge par @capgo/capacitor-textinteraction ?

Les Capgo plugins suivent la version majeure de Capacitor : utilisez la version majeure du plugin qui correspond à la version majeure de votre Capacitor (par exemple, plugin v8 avec Capacitor 8). La table de compatibilité dans le README du GitHub liste les versions maintenues.

Est-ce que @capgo/capacitor-textinteraction est gratuit et open source ?

Oui. Le code source de code est public sur GitHub à https://github.com/Cap-go/capacitor-textinteraction/ et le package est gratuit pour l'installer depuis npm. Les rapports de bugs et les demandes de pull sont les bienvenus.

Peut-on mettre à jour code qui utilise Text Interaction sans passer par une revue de l'App Store ?

L'installation ou la mise à jour du plugin modifie la code native, elle nécessite donc une nouvelle mise à jour de l'application. Après cela, les modifications JavaScript, HTML et CSS qui appellent le plugin peuvent être déployées instantanément avec les mises à jour Capgo.

Envoyez les modifications de l'interaction texte sans attendre l'examen de l'application.

Une fois le plugin dans votre magasin de build, Capgo les mises à jour en temps réel déclenchent vos modifications JavaScript, HTML et CSS chez les utilisateurs en quelques minutes.

Démarrer avec Capgo