Zum Hauptinhalt springen
@capgo/capacitor-textinteraction Benutzeroberfläche und System Offene Quelle

Textinteraktion Capacitor-Plugin

Schalten Sie die Textauswahl und den iOS-Magnifizierlinsen in der Capacitor-WebView aus, wenn Ihre App wie ein natives App wirken soll, und schalten Sie sie dann wieder ein, bevor der Benutzer tippen muss.

  • iOS · Unterstützt (ab iOS 14.5)
  • Android · Nicht unterstützt (erstellt success: false)
  • Web · Nicht unterstützt (wirft unimplemented)

Installieren

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

Anleitung

Wie man Text Interaction in Capacitor verwendet

Testen auf Gerät

Laden Sie die Capgo-App herunter, dann scannen Sie die QR-code.

Vorschau-QR-code für das Text-Interaction-Plugin

Textauswahl und das Vergrößerungslens in Capacitor-Apps für iOS deaktivieren

@capgo/capacitor-textinteraction Gibt Ihnen einen Aufruf, um die Textinteraktion in der Capacitor-WebView auf iOS an- oder auszuschalten. Wenn sie ausgeschaltet ist, wählt das lange Drücken von Text nicht mehr aus, zeigt keine Kopierhinweis oder bringt das von iOS 15 wieder eingeführte Vergrößerungslens zum Einsatz. Ihre Web-App fühlt sich nicht mehr wie eine Web-Seite in einem nativen Shell.

Unter der Haube setzt der Plugin die Eigenschaft WKPreferences.isTextInteractionEnabled on the app's WKWebView. Es ändert nichts anderes.

Wann Sie es verwenden sollten

  • Games, Kioske und Zeichnungs-Apps wo lange Drücken und Ziehen niemals Text auswählen sollte.
  • Benutzerdefinierte lange Drücken-Menüs die mit den nativen Auswahlhandhabern und Hinweisen kollidieren.
  • Medienplayer, Karten und Karussells wo ein langsames Wischen versehentlich den Loupe auslöst.
  • Branded, appart-like Oberfläche wo auswählbare Beschriftungen und Schaltflächen die natürliche Oberfläche stören.

Halten Sie die Textinteraktion für Bildschirme offen, auf denen Benutzer lange Inhalte lesen, die sie kopieren möchten, oder auf denen sie Formulare ausfüllen.

Installieren

bun add @capgo/capacitor-textinteraction
bunx cap sync

Nein Info.plist Keine Schlüssel, Berechtigungen oder capacitor.config.ts Einträge sind erforderlich.

Plugin-Version Capacitor Version Wartung
v8.x v8.x Ja
v7.x v7.x Nach Bedarf
v6.x und älter v6.x und älter Nein

Textinteraktion auf App-Start deaktivieren

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

Always übermitteln enabled explicitly. Die native Seite behandelt einen fehlenden Wert als false.

Während Textinteraktion ausgeschaltet ist,

Während die Textinteraktion ausgeschaltet ist, <input>, <textarea> und contenteditable Die Eingabe wird gestoppt. Aktivieren Sie sie für jede Seite mit einem Formular und deaktivieren Sie sie, wenn der Benutzer die Seite verlässt.

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

Mit einem Router aufrufen setTextInteraction(true) bei Eingabe in Routen, die Eingabefelder enthalten (z.B. Vue Router beforeEnter, ein React useEffect, oder Angular ionViewWillEnter) und setTextInteraction(false) bei Verlassen.

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 funktioniert pro Element, daher bleiben alle vergessenen Auswahlmöglichkeiten erhalten und es ändert sich auch nicht, wie der WebView selbst mit langen Drücken umgeht. Der Plugin funktioniert auf der Ebene des WebViews: Ein Aufruf reicht für jede Seite, einschließlich des Magnifizierungs-Linsen. Viele Apps verwenden beide: Das Plugin für appartige Seiten und CSS für feine Kontrolle innerhalb von Seiten, bei denen die Textinteraktion aktiv bleibt.

API Referenz

toggle(options)

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

Aktiviert oder deaktiviert die Textinteraktion für das Capacitor WebView.

  • enabled: true wiederherstellt die Auswahl, den Hinweis und das Vergrößerungsglas. false deaktiviert sie.
  • success: true wenn die Änderung angewendet wurde (ab iOS 14.5+ mit einem WebView verfügbar). false auf Android und wenn kein WebView verfügbar ist.

getPluginVersion()

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

Gibt die native Pluginversion zurück. Gibt zurück web Verhaltensweise der Plattform

Verhalten der Plattform

Verhalten iOS 14.5+
Setzt Sets isTextInteractionEnabled On dem WKWebView. Wird auf allen Seiten bis zum erneuten Umstellung angewendet.
Android Keine Aktion. Löst { success: false }Verwenden Sie CSS, wenn Sie die Auswahl einschränken müssen.
Web toggle werfen Sie eine nicht implementierte Fehlermeldung. Wachenaufrufe mit Capacitor.getPlatform().

Unterstützung

  • Eingabefelder funktionieren nicht mehr. Eingaben funktionieren nicht mehr. toggle({ enabled: true }) Textinteraktion ist weiterhin deaktiviert. Rufen Sie
  • vor der Anzeige des Formulars auf. Erfreulich. Das Plugin unterstützt nur iOS.
  • TextInteraction.toggle is not available on web. Die Anfrage wurde im Browser oder während der Entwicklung in einem Desktopbrowser ausgeführt. Verwenden Sie einen Plattformprüfung.
  • Die Auswahl wird nach einem Neustart der App zurückgegeben. Jeder Start erstellt einen neuen WebView mit Textinteraktion aktiviert. Rufen Sie ihn toggle({ enabled: false }) während des Startens auf.

Die Änderung ohne App Store-Bewertung verschicken

Das Textinteraktionstoggle ist JavaScript. Sobald das Plugin in Ihrem native Build ist, können Sie mit ihm festlegen, wo und wann es läuft. Capgo live update anstatt auf die App Store-Bewertung zu warten.

Vollständige Referenz

FAQ

FAQ für das Text-Interaktion-Plugin

Wie kann ich die Textauswahl in einer Capacitor-iOS-Anwendung deaktivieren?

Installieren Sie @capgo/capacitor-textinteraction, führen Sie dann bunx cap sync aus und rufen Sie TextInteraction.toggle({ enabled: false }) auf. Der Plugin setzt isTextInteractionEnabled auf false auf dem WKWebView, was die Textauswahl und den Magnifizierlinsen für den gesamten WebView deaktiviert.

Weshalb ist CSS user-select: none nicht ausreichend auf iOS?

Die Eigenschaften user-select und -webkit-touch-callout stoppen die meisten Auswahlmöglichkeiten in der Seite, aber der WKWebView kann immer noch den Magnifizierlinsen und die Auswahlverhalten bei längerem Drücken anzeigen, und jedes Element, das Sie vergessen, zu stylen, bleibt auswählbar. Der Plugin switcht die Textinteraktion auf der WebView-Ebene aus, sodass ein Aufruf alle Bildschirme abdeckt.

Können Benutzer noch in Eingabefeldern tippen, während die Textinteraktion deaktiviert ist?

Nein. Während die Textinteraktion deaktiviert ist, funktionieren Texteingabefelder, Textareae und contenteditable-Elemente nicht mehr. Rufen Sie TextInteraction.toggle({ enabled: true }) auf, bevor Sie ein Formular oder ein Suchfeld anzeigen, und deaktivieren Sie es wieder, wenn der Benutzer diese Seite verlässt.

Arbeitet das Plugin auf Android oder im Web?

No. Text interaction ist nur auf iOS verfügbar. Auf Android wird die Anfrage mit Erfolg auf false gesetzt und ändert nichts. Auf der Web-Plattform wird eine unimplementierte Fehlermeldung ausgelöst, daher schützen Sie sie mit Capacitor.getPlatform() === &quot;ios&quot;.

Welche iOS- und Capacitor-Versionen werden unterstützt?

Die native API-App benötigt iOS 14.5 oder später. Plugin-Major-Versionen folgen Capacitor: Verwenden Sie das Plugin v8 mit Capacitor 8 und das Plugin v7 mit Capacitor 7.

Behält sich die Einstellung nach dem App-Neustart?

Die Einstellung bleibt auf der WebView-Konfiguration, sodass sie bis zum Aufrufen von toggle wieder wirksam ist. Ein neuer App-Start erstellt eine neue WebView mit Text-Interaktion aktiviert, daher rufen Sie toggle erneut auf, wenn Sie sie ausgeschaltet haben möchten.

Wie installiere ich die Text Interaction-Plugin in einer Capacitor-App?

Run &quot;bun add @capgo/capacitor-textinteraction&quot; (or &quot;npm install @capgo/capacitor-textinteraction&quot;), then run &quot;bunx cap sync&quot; so the iOS and Android projects pick up the native code. Import it from &quot;@capgo/capacitor-textinteraction&quot; in your app code.

Funktioniert @capgo/capacitor-textinteraction mit React, Vue und Angular?

Yes. Text Interaction is a Capacitor package, so it works with any web framework that runs inside Capacitor, including Ionic, React, Vue, Angular, Svelte and plain JavaScript.

Welche Capacitor Version unterstützt @capgo/capacitor-textinteraction?

Capgo-Erweiterungen folgen der Capacitor-Version: Wählen Sie die Erweiterungsversion, die Ihrem Capacitor-Version entspricht (z. B. Erweiterung v8 mit Capacitor 8). Die Kompatibilitäts-Tabelle in der GitHub-README enthält die unterstützten Versionen.

Is @capgo/capacitor-textinteraction kostenlos und Open-Source?

Yes. The source code is public on GitHub at https://github.com/Cap-go/capacitor-textinteraction/ and the package is free to install from npm. Bug reports and pull requests are welcome.

Kann ich code mit Text Interaction aktualisieren, ohne eine App-Store-Bewertung abzuwarten?

Die Installation oder Aktualisierung der Erweiterung ändert die native code, daher ist eine neue App-Store-Build erforderlich. Danach können JavaScript-, HTML- und CSS-Änderungen, die die Erweiterung aufrufen, sofort mit Capgo-Live-Updates bereitgestellt werden.

Schicken Sie Text-Interaktionen ohne auf eine App-Überprüfung warten zu müssen

Einmal der Plugin in Ihrem Store-Build ist, Capgo Live-Updates drücken Ihre JavaScript-, HTML- und CSS-Änderungen an Benutzern in Minuten.

Beginnen Sie mit Capgo