메인 콘텐츠로 건너뛰기
@capgo/capacitor-텍스트 상호작용 UI & 시스템 오픈 소스

텍스트 상호작용 Capgo Capacitor 플러그인

Capacitor WebView에서 텍스트 선택과 iOS 확대경을 끄고, 앱이 원활하게 작동할 때, 다시 켜서 사용자가 입력할 때까지.

  • iOS · 지원 (iOS 14.5+)
  • Android · 지원하지 않음 (resolves success: false)
  • Web · 지원하지 않음 (throws unimplemented)

설치

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

가이드

Capacitor에서 텍스트 상호 작용 사용하는 방법

장치에서 테스트

Capgo 앱을 다운로드하고 QR code을 스캔하세요.

텍스트 상호 작용 플러그인 미리보기 QR code

Capacitor iOS 앱에서 텍스트 선택과 줌인 렌즈를 비활성화합니다.

@capgo/capacitor-textinteraction Capacitor iOS WebView에서 텍스트 상호 작용을 켜거나 끄기 위해 단 한번의 호출을 제공합니다. 비활성화 시, 텍스트를 길게 누르면 더 이상 선택되지 않으며 복사 메뉴나 줌인 렌즈가 표시되지 않습니다. iOS 15에서 재소개된 줌인 렌즈도 나타나지 않습니다. 웹 앱은 네이티브 셸 내부에서 웹 페이지처럼 느껴지지 않습니다.

이 플러그인은 다음을 설정합니다. WKPreferences.isTextInteractionEnabled __CAPGO_KEEP_0__ 앱의 WKWebView이 설정은 다른 설정을 변경하지 않습니다.

사용할 때

  • 게임, 키오스크 및 그림판 앱 길이 누르기와 드래그 동작이 텍스트를 선택하지 않도록 해야 하는 경우
  • 사용자 정의 길이 누르기 메뉴 네이티브 선택 핸들 및 메뉴와 충돌하는 경우
  • 미디어 플레이어, 지도 및 카러셀 느린 스와이프로 줌인 렌즈가 트리거되는 경우
  • 브랜드 UI와 앱 같은 UI 선택 가능한 레이블과 버튼이 원시적인 느낌을 깨트린다.

텍스트 상호 작용을 화면에서 유지하여 사용자가 긴 콘텐츠를 읽거나 양식을 작성할 수 있는 곳에서 사용한다.

설치

bun add @capgo/capacitor-textinteraction
bunx cap sync

아니오 Info.plist 키, 권한 또는 capacitor.config.ts 등록이 필요하지 않다.

플러그인 버전 Capacitor 버전 유지 관리
v8.x v8.x 예
v7.x v7.x 사용자 요청 시
v6.x 이하 v6.x 이하 아니오

앱 시작 시 텍스트 상호 작용 비활성화

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 pass enabled 사용자가 입력하기 전에 다시 활성화하십시오. false.

텍스트 상호 작용이 비활성화된 경우

텍스트 상호작용이 끌ensa면 <input>, <textarea> 그리고 contenteditable 입력을 받지 않습니다. 사용자가 화면을 떠날 때까지 다시 활성화하고, 사용자가 화면을 떠날 때 다시 비활성화하세요.

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

라우터를 사용하여 setTextInteraction(true) 입력 요소가 포함된 경로의 enter hook에서 호출하세요 (예: Vue Router beforeEnter, React useEffect, Angular ionViewWillEnter) 그리고 setTextInteraction(false) 사용자가 떠날 때.

플러그인 vs CSS

대부분의 선택을 숨기려면 CSS를 사용하세요:

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

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

CSS는 요소 단위로 작동하므로, 잊어버린 요소는 선택 가능하고, WebView가 긴 터치 핑크를 처리하는 방식은 변하지 않습니다. 플러그인은 WebView 레벨에서 작동합니다: 하나의 호출로 모든 화면을 커버하며, 확대 렌즈 화면도 포함됩니다. 많은 앱은 두 가지를 모두 사용합니다: 앱과 같은 화면에 플러그인을 사용하고, 텍스트 상호 작용이 화면 내에서 미세한 제어가 필요한 화면에 CSS를 사용합니다.

API 참조

toggle(options)

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

Capacitor 텍스트 상호작용을 켜거나 끕니다.

  • enabled: true 선택, 호출, 및 확대경을 복원합니다. false 그들을 비활성화합니다.
  • success: true 변경이 적용되었을 때 (iOS 14.5+에서 WebView가 사용 가능할 때). false Android에서 및 WebView가 사용할 수 없을 때.

getPluginVersion()

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

자연스러운 플러그인 버전을 반환합니다. 반환 web 브라우저에서.

플랫폼 동작

플랫폼 동작
iOS 14.5+ 설정 isTextInteractionEnabled Android WKWebView이 기능은 Android에서 작동하지 않습니다.
No-op. Resolves Android에서 작동하지 않습니다. 해결 { success: false }Web
Web toggle Troubleshooting Capacitor.getPlatform().

문제 해결

  • 입력들이 작동하지 않습니다. 입력 기능이 작동하지 않습니다. toggle({ enabled: true }) Text interaction is still disabled.
  • 텍스트 상호 작용이 아직 비활성화되어 있습니다. 예상됨. 이 플러그인은 iOS만 지원합니다.
  • TextInteraction.toggle is not available on web. 브라우저에서 호출되거나 데스크톱 브라우저에서 개발 중일 때 호출됩니다. 플랫폼 체크로 감싸세요.
  • 선택이 앱을 재시작한 후에도 돌아옵니다. 각 시작 시 새로운 WebView가 생성되고 텍스트 상호 작용이 활성화됩니다. 호출 toggle({ enabled: false }) 시작 시 호출하세요.

__CAPGO_KEEP_1__

애플 스토어 검토 없이 변경을 배포하세요 텍스트 상호 작용을 켜고 끄는 것은 자바스크립트입니다. 네이티브 빌드에 플러그인을 추가한 후, 플러그인이 어디서, 언제 실행되는지 Capgo live update를 사용하여 변경할 수 있습니다. 애플 스토어 검토를 기다리지 않고.

전체 참조

FAQ

텍스트 상호 작용 플러그인 FAQ

How do I disable text selection in a Capacitor iOS app?

@capgo/capacitor-textinteraction을 설치하고 bunx cap sync를 실행한 후 TextInteraction.toggle({ enabled: false })를 호출하세요. 플러그인은 WKWebView에서 isTextInteractionEnabled을 false로 설정하여 전체 WebView에서 텍스트 선택과 확대 렌즈를 비활성화합니다.

iOS에서 CSS user-select: none이 충분하지 않은 이유는 무엇입니까?

user-select와 -webkit-touch-callout는 대부분의 선택을 중단하지만 WKWebView는 여전히 확대 렌즈와 선택 동작을 보여주며, 스타일링을忘은 요소는 여전히 선택 가능합니다. 플러그인은 WebView 수준에서 텍스트 상호 작용을 비활성화하여, 한 번의 호출로 모든 화면을 커버할 수 있습니다.

텍스트 상호 작용이 비활성화된 상태에서 사용자는 입력 필드에 입력할 수 있습니까?

아니요. 텍스트 상호 작용이 비활성화된 상태에서 텍스트 입력 필드, 텍스트 영역, contenteditable 요소는 작동하지 않습니다. 사용자가 화면을 떠날 때까지 텍스트 상호 작용을 비활성화한 후, 사용자가 폼이나 검색 필드를 보여주기 전에 TextInteraction.toggle({ enabled: true })를 호출하세요.

플러그인은 Android 또는 웹에서 작동합니까?

iOS에서만 텍스트 상호 작용을 켜고 끌 수 있습니다. 안드로이드에서는 호출이 성공으로 설정된 false를 반환하고 아무런 변화도 일어나지 않습니다. 웹에서는 호출이 미implemented 오류를 발생시키므로 Capacitor.getPlatform() === &quot;ios&quot;과 같은 조건문으로 보호해야 합니다.

iOS와 Capacitor의 어떤 버전이 지원되는지 궁금합니다.

API의 네이티브 버전은 iOS 14.5 이상이 필요합니다. 플러그인 메이저 버전은 Capacitor을 따릅니다. 예를 들어, 플러그인 v8은 Capacitor 8과 함께 사용하고, 플러그인 v7은 Capacitor 7과 함께 사용합니다.

설정이 앱이 재시작된 후에도 유지되나요?

설정은 WebView 구성에서 유지되므로 페이지 탐색 중에 유지됩니다. 그러나 다시 toggle를 호출해야 합니다. 앱이 새로 시작되면 WebView가 새로 생성되어 텍스트 상호 작용이 켜집니다. 다시 toggle를 호출하여 기본적으로 끄고 싶다면 앱이 시작될 때 다시 호출하세요.

Capacitor 앱에서 텍스트 상호 작용 플러그인을 설치하는 방법은 무엇인가요?

bun add @capgo/capacitor-textinteraction (또는 npm install @capgo/capacitor-textinteraction) 명령어를 실행한 후, bunx cap sync 명령어를 실행하여 iOS와 Android 프로젝트가 네이티브 code을 인식하도록 합니다. 그리고 @capgo/capacitor-textinteraction을 import하여 code에서 사용하세요.

@capgo/capacitor-textinteraction은 React, Vue 및 Angular와 함께 작동하나요?

네. 텍스트 상호 작용은 Capacitor 패키지이므로, Ionic, React, Vue, Angular, Svelte 및 plain JavaScript와 같은 웹 프레임워크가 Capacitor 내에서 실행되는 경우에 작동합니다.

Which Capacitor version does @capgo/capacitor-textinteraction support?

Capgo 플러그인은 Capacitor의 주요 버전을 따릅니다: Capgo의 주요 버전을 사용하여 Capacitor의 주요 버전과 일치하는 플러그인 주요 버전을 사용하십시오 (예를 들어 플러그인 v8과 Capacitor 8). GitHub README에 있는 호환성 표에 나열된 유지 보수 버전을 참조하십시오.

capgo/capacitor-textinteraction은 무료이며 오픈 소스인가요?

code은 GitHub에 공개되어 있습니다 (https://github.com/Cap-go/capacitor-textinteraction/). npm에서 패키지를 무료로 설치할 수 있으며 버그 리포트와 풀 리퀘스트는 환영합니다.

code을 사용하는 텍스트 인터랙션을 업데이트할 수 있나요?

code을 설치하거나 업그레이드하면 네이티브 code이 변경되므로 새로운 스토어 빌드를 필요로 합니다. 그 후에 Capgo의 라이브 업데이트와 함께 즉시 code을 호출하는 자바스크립트, HTML 및 CSS 변경 사항을 배포할 수 있습니다.

Capacitor 텍스트 상호 작용 변경 사항을 앱 리뷰 기다리지 않고 배포합니다.

Capacitor 플러그인을 스토어 빌드에 추가한 후, Capgo 라이브 업데이트가 사용자에게 몇 분 내에 자바스크립트, HTML 및 CSS 변경 사항을 푸시합니다.

Start with Capgo