Langsung ke konten utama
@capgo/capacitor-interaksi-teks UI & Sistem Terbuka Sumber

Interaksi Teks 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 · Disediakan (iOS 14.5+)
  • Android · Tidak didukung (mengembalikan kesalahan: false)
  • Website · Tidak didukung (mengeluarkan tidak diimplementasikan)

Install

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

Panduan

Bagaimana menggunakan Interaksi Teks di Capacitor

Uji coba di perangkat

Unduh aplikasi Capgo, kemudian scan kode QR code.

Tautan QR pratinjau plugin Interaksi Teks code

Nonaktifkan pemilihan teks dan lensa pembesar di Capacitor aplikasi iOS

@capgo/capacitor-textinteraction Menghadiahkan Anda satu panggilan untuk mengaktifkan atau menonaktifkan interaksi teks di Capacitor WebView pada iOS. Ketika itu menonaktifkan, menekan tombol panjang tidak lagi memilih teks, menampilkan panggilan salin, atau menampilkan lensa pembesar yang iOS 15 kembali reintroduksi. Aplikasi web Anda berhenti terasa seperti halaman web di dalam shell native.

Di bawah kerangka kerja plugin ini mengatur WKPreferences.isTextInteractionEnabled on aplikasi's WKWebView. Ini tidak mengubah apa pun lainnya.

Kapan menggunakan plugin ini

  • Permainan, kiosk, dan aplikasi gambar di mana gestur tekan panjang dan geser tidak boleh memilih teks.
  • Menu panjang-tekuk kustom yang bertabrakan dengan tangan pemilihan native dan panggilan.
  • Pemain media, peta, dan carousel di mana geser lambat secara tidak sengaja menimbulkan loupe.
  • Antarmuka pengguna yang terkenal, seperti aplikasi dimana label dan tombol yang dapat dipilih mengganggu perasaan asli.

Tetapkan interaksi teks aktif untuk layar-layar di mana pengguna membaca konten panjang yang mungkin ingin mereka salin, atau di mana mereka mengisi formulir.

Install

bun add @capgo/capacitor-textinteraction
bunx cap sync

Tidak Info.plist keys, izin akses atau capacitor.config.ts keamanan, izin atau

masukannya yang diperlukan. Versi Capacitor Maintained
v8.x v8.x Ya
v7.x v7.x Pada permintaan
v6.x dan lebih tua v6.x dan lebih tua Tidak

Nonaktifkan interaksi teks pada awal aplikasi

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

Selalu lakukan enabled Dengan eksplisit. Sisi native menganggap nilai hilang sebagai false.

Sementara interaksi teks dimatikan,

Sementara interaksi teks dimatikan, <input>, <textarea> dan contenteditable Elemen-elemen tidak menerima input lagi. Aktifkan kembali untuk layar mana pun yang memiliki formulir, lalu matikan lagi ketika pengguna meninggalkannya.

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

Dengan router, panggil setTextInteraction(true) dalam hook masuk jalur yang mengandung input (misalnya Vue Router beforeEnter, sebuah React useEffect, atau Angular ionViewWillEnter) dan setTextInteraction(false) ketika meninggalkannya.

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 bekerja per elemen, jadi apa pun yang Anda lupakan tetap dapat dipilih, dan tidak mengubah cara WebView itu sendiri menghandle tekan panjang. Plugin bekerja pada tingkat WebView: satu panggilan mencakup setiap layar, termasuk lensa pembesar. Banyak aplikasi menggunakan kedua-duanya: plugin untuk layar aplikasi dan CSS untuk kontrol halus di dalam layar di mana interaksi teks tetap aktif.

API referensi

toggle(options)

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

Mengaktifkan atau menonaktifkan interaksi teks untuk Capacitor WebView.

  • enabled: true Mengembalikan seleksi, panggilan, dan lensa pembesar. false Menghilangkan fitur-fitur tersebut.
  • success: true ketika perubahan telah diterapkan (iOS 14.5+ dengan WebView tersedia). false pada Android dan ketika WebView tidak tersedia.

getPluginVersion()

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

Mengembalikan versi plugin native. web Mengembalikan versi plugin native.

Mengembalikan versi plugin native.

Platform Behavior
iOS 14.5+ Sets isTextInteractionEnabled di atas WKWebView. Berlaku untuk semua halaman hingga diaktifkan lagi.
Android Tidak berlaku. Menyelesaikan { success: false }. Gunakan CSS jika Anda perlu membatasi pilihan.
Web toggle Mengeluarkan kesalahan tidak diimplementasikan. Guard panggilan dengan Capacitor.getPlatform().

Troubleshooting

  • Masalah masukan berhenti bekerja. Interaksi teks masih dinonaktifkan. Hubungi toggle({ enabled: true }) Interaksi teks masih dinonaktifkan. Panggil
  • sebelum formulir ditampilkan. Diharapkan. Plugin ini hanya mendukung iOS.
  • TextInteraction.toggle is not available on web. Panggilan berjalan di browser atau selama pengembangan di browser desktop. Tutupinya dengan periksa platform.
  • Pilihan kembali setelah aplikasi di-restart. Setiap peluncuran membuat WebView baru dengan interaksi teks diaktifkan. Panggil toggle({ enabled: false }) selama startup.

Rilis perubahan tanpa tinjauan App Store

Tombol interaksi teks adalah JavaScript. Setelah plugin masuk ke dalam aplikasi asli Anda, Anda dapat mengubah tempat dan waktu penggunaannya dengan Capgo live update daripada menunggu tinjauan App Store.

Referensi lengkap

FAQ

FAQ untuk plugin Interaksi Teks

Bagaimana cara saya mengaktifkan pengaktifan teks dalam aplikasi iOS Capacitor?

Instal @capgo/capacitor-textinteraction, jalankan bunx cap sync, kemudian panggil TextInteraction.toggle({ enabled: false }). Plugin ini mengatur isTextInteractionEnabled menjadi false pada WKWebView, yang menghentikan pengaktifan teks dan lensa magnifier untuk seluruh WebView.

Mengapa CSS user-select: none tidak cukup pada iOS?

user-select dan -webkit-touch-callout menghentikan seleksi pada konten halaman, tetapi WKWebView masih menampilkan lensa magnifier dan perilaku seleksi ketika tekan panjang, dan setiap elemen yang tidak diatur tetap dapat diakses. Plugin ini mematikan interaksi teks pada tingkat WebView, sehingga satu panggilan mencakup semua layar.

Apakah pengguna masih dapat mengetikkan input sementara interaksi teks dinonaktifkan?

Tidak. Sementara interaksi teks dinonaktifkan, input teks, textarea, dan elemen contenteditable berhenti berfungsi. Panggil TextInteraction.toggle({ enabled: true }) sebelum menampilkan form atau bidang pencarian, dan nonaktifkan kembali ketika pengguna meninggalkan layar tersebut.

Apakah plugin ini berfungsi pada Android atau web?

Tidak. Pengaturan interaksi teks hanya tersedia di iOS. Pada Android, panggilan akan menyelesaikan dengan kesuksesan menjadi false dan tidak mengubah apa-apa. Pada web, panggilan akan melempar kesalahan tidak diimplementasikan, jadi lindungi dengan Capacitor.getPlatform() === &quot;ios&quot;.

Versi iOS dan Capacitor mana yang didukung?

Native API memerlukan iOS 14.5 atau lebih baru. Versi plugin utama mengikuti Capacitor: gunakan plugin v8 dengan Capacitor 8 dan plugin v7 dengan Capacitor 7.

Apakah pengaturan bertahan setelah aplikasi restart?

Pengaturan hidup di konfigurasi WebView, jadi tetap berlaku selama navigasi halaman sampai Anda panggil toggle lagi. Peluncuran aplikasi baru membuat WebView baru dengan interaksi teks diaktifkan, jadi panggil toggle lagi pada startup jika Anda ingin mematikan secara default.

Bagaimana saya menginstal plugin Interaksi Teks di aplikasi Capacitor?

Jalankan &quot;bun add @capgo/capacitor-textinteraction&quot; (atau &quot;npm install @capgo/capacitor-textinteraction&quot;), kemudian jalankan &quot;bunx cap sync&quot; agar proyek iOS dan Android memilih native code. Import dari &quot;@capgo/capacitor-textinteraction&quot; di code aplikasi Anda.

Apakah @capgo/capacitor-textinteraction berfungsi dengan React, Vue dan Angular?

Ya. Interaksi Teks adalah paket Capacitor, jadi berfungsi dengan apa saja framework web yang berjalan di dalam Capacitor, termasuk Ionic, React, Vue, Angular, Svelte dan JavaScript biasa.

Versi Capacitor mana yang didukung oleh @capgo/capacitor-textinteraction?

Capgo plugin mengikuti Capacitor versi utama: gunakan versi utama plugin yang sesuai dengan versi utama Capacitor Anda (misalnya plugin v8 dengan Capacitor 8). Tabel kompatibilitas di README GitHub menyebutkan versi yang masih dipelihara.

Apakah @capgo/capacitor-textinteraction gratis dan terbuka sumber?

Ya. Sumber code terbuka di GitHub di https://github.com/Cap-go/capacitor-textinteraction/ dan paketnya gratis untuk diinstal dari npm. Laporan bug dan permintaan pull selalu welcome.

Apakah saya bisa memperbarui code yang menggunakan Interaksi Teks tanpa melalui tinjauan App Store?

Pemasangan atau pengupgrade plugin mengubah code native, jadi memerlukan build toko baru. Setelah itu, perubahan JavaScript, HTML, dan CSS yang memanggil plugin bisa berlalu-lalang dengan Capgo update live.

Kirim perubahan Interaksi Teks tanpa menunggu tinjauan aplikasi

Setelah plugin masuk dalam pembangunan toko aplikasi Anda, Capgo pembaruan hidup memperbarui JavaScript, HTML, dan CSS Anda ke pengguna dalam menit.

Mulai dengan Capgo