AppBar 아래 화면 본문처럼 높이가 정해진 영역에 KeyboardAvoidingScrollView.Root를 두고, 입력 화면을 KeyboardAvoidingScrollView.Content로 감쌉니다. 키보드 위에 붙여야 하는 하단 버튼은 Content 아래의 KeyboardAvoidingScrollView.Footer에 둡니다.
import { KeyboardAvoidingScrollView } from "@seed-design/lynx-react";export function Screen() { return ( <KeyboardAvoidingScrollView.Root className="screen-body"> <KeyboardAvoidingScrollView.Content>{/* 입력 화면 */}</KeyboardAvoidingScrollView.Content> <KeyboardAvoidingScrollView.Footer>{/* 하단 버튼 */}</KeyboardAvoidingScrollView.Footer> </KeyboardAvoidingScrollView.Root> );}
Root에는 높이를 지정하고 자식으로 Content와 Footer만 두세요. Footer는 Content 바로 아래에 배치합니다.
Content는 focus된 입력이 키보드나 Footer에 가리지 않도록 스크롤과 하단 여백을 조정합니다. keyboardGap과 scrollBehavior로 간격과 이동 방식을 정할 수 있습니다.
Footer는 키보드 위로 이동합니다. 하단 safe area 여백은 Root 바깥의 화면 컨테이너에 두세요.
Text Field Registry의 Input과 Textarea는 focus, blur, 높이 변경을 자동으로 전달합니다.
Android에서 이 컴포넌트가 키보드 회피를 맡으면 입력 요소에 android-set-soft-input-mode="nothing"을 지정하고 avoid-keyboard는 사용하지 마세요.
TextField.Textarea에 여러 줄을 입력해 높이가 달라지면 활성 입력 영역의 위치를 다시 계산합니다.
Lynx 예제를 불러오는 중입니다.
import "./styles";import { KeyboardAvoidingScrollView } from "@seed-design/lynx-react";import { TextField, TextFieldTextarea } from "@/components/ui/text-field";export default function Example() { return ( <KeyboardAvoidingScrollView.Root className="keyboard-avoiding-scroll-view-preview" keyboardGap={24} scrollBehavior="smooth" > <KeyboardAvoidingScrollView.Content> <view className="keyboard-avoiding-scroll-view-preview__content"> <text className="keyboard-avoiding-scroll-view-preview__title">여러 줄 입력</text> <text className="keyboard-avoiding-scroll-view-preview__description"> 줄을 추가해 입력 영역이 커져도 키보드 위의 안전한 위치를 다시 계산합니다. </text> <view className="keyboard-avoiding-scroll-view-preview__spacer"> <text className="keyboard-avoiding-scroll-view-preview__spacer-label"> 입력 영역이 화면 아래에 오도록 확보한 공간 </text> </view> <view className="keyboard-avoiding-scroll-view-preview__field"> <TextField label="자기소개"> <TextFieldTextarea accessibility-label="자기소개" android-set-soft-input-mode="nothing" maxlength={300} placeholder="여러 줄을 입력해 보세요" /> </TextField> </view> <view className="keyboard-avoiding-scroll-view-preview__footer-space" /> </view> </KeyboardAvoidingScrollView.Content> </KeyboardAvoidingScrollView.Root> );}
이 예제는 네이티브 입력 요소의 자동 높이 조절과 키보드 회피 동작을 사용합니다. QR 코드 패널에서 Lynx Explorer로 실행한 뒤 여러 줄을 입력해 확인해 주세요.