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가 사용 가능할 때).falseAndroid에서 및 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 })시작 시 호출하세요.
관련 플러그인
- Privacyscreen iOS 앱 switcher에서 앱 콘텐츠를 숨기고 Android 스크린샷을 차단합니다.
- 홈 인디케이터 iOS 홈 인디케이터를 숨겨서 몰입형 화면을 위해
- 스크린 오리엔테이션 스크린 오리엔테이션을 잠그고 읽습니다.
- 모든 플러그인을 둘러보기 Capacitor 플러그인은 Capgo에서 제공합니다..
__CAPGO_KEEP_1__
애플 스토어 검토 없이 변경을 배포하세요 텍스트 상호 작용을 켜고 끄는 것은 자바스크립트입니다. 네이티브 빌드에 플러그인을 추가한 후, 플러그인이 어디서, 언제 실행되는지 Capgo live update를 사용하여 변경할 수 있습니다. 애플 스토어 검토를 기다리지 않고.