Text field
일정 높이의 필드 안에 한 줄 이하의 값을 입력할 수 있는 컴포넌트로 Heading, Placeholder, Description 등의 요소를 활용하여 사용자가 입력할 내용의 형식을 보다 명확하게 안내합니다.
이 컴포넌트는 사용자가 텍스트를 입력할 수 있는 필드를 제공합니다. 제목, 아이콘, 자동완성, 상태 표시 등 다양한 기능을 지원합니다.
Note
비활성화는 SwiftUI 표준
disabled(_:)를 사용합니다. 상위 컨테이너에 한 번 걸면 하위 컴포넌트까지 함께 비활성 스타일로 표시됩니다. 트레일링 버튼만 따로 비활성화하려면 TextField.TrailingButtonInfo의disable을 사용합니다.
struct AutoCompletionDataSource
텍스트 필드의 자동완성 기능을 위한 데이터 소스를 정의합니다.
-
Overview
이 구조체를 사용하여 자동완성 목록의 섹션, 항목, 레이아웃 등을 정의할 수 있습니다.
static func == (AutoCompletionDataSource, AutoCompletionDataSource) -> Bool
init<V>(numberOfSections: Int, sectionTitleAt: ((Int) -> String)?, numberOfItemsInSection: (Int) -> Int, cellForItemAt: (IndexPath) -> V, headerView: (() -> any View)?, footerView: (() -> any View)?, maxHeight: CGFloat)
자동완성 데이터 소스를 초기화합니다.
-
Parameters
var totalNumberOfItems: Int
전체 항목 수를 반환합니다.
struct TrailingButtonInfo
텍스트 필드의 오른쪽에 표시할 버튼의 속성을 정의합니다.
-
Overview
이 구조체를 사용하여 필드 내부 오른쪽에 표시될 버튼(Outlined 형태)의 텍스트와 동작을 정의할 수 있습니다.
init(title: String, disable: Bool, handler: (() -> Void)?)
트레일링 버튼을 초기화합니다.
-
Parameters
init(text: Binding<String>, autoCompletionDataSource: Binding<AutoCompletionDataSource?>)
텍스트 필드를 초기화합니다.
-
Parameters
var body: some View
뷰의 내용과 동작을 정의합니다.
-
Discussion
항상 FormControl로 감싼다. 라벨·메시지 유무로 분기하면 값이 런타임에 바뀔 때 뷰 identity가 갈려 입력 중 포커스가 풀리므로, 설정이 비어 있어도 래퍼를 유지한다.
func accessory<Accessory>(() -> Accessory) -> TextField
메시지 행의 오른쪽에 표시할 액세서리 뷰를 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
-
Discussion
글자 수 카운트, 타이머 등 입력 아래에 붙는 보조 요소를 자유롭게 구성할 수 있습니다. 스타일(타이포그래피·색)은 호출부에서 지정합니다.
func autocorrectionDisabled(Bool) -> TextField
자동수정과 맞춤법 검사를 비활성화할지 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
-
Discussion
이메일·아이디·인증 코드처럼 자동수정이 오히려 방해가 되는 입력에서 사용합니다.
true이면 입력 중 자동수정이 적용되지 않고, 맞춤법 검사 밑줄도 표시되지 않습니다.텍스트 필드가 내부에서 SwiftUI의
autocorrectionDisabled(_:)를 직접 적용하므로, 호출부에서 인스턴스 바깥에 같은 모디파이어를 붙이면 내부 설정에 덮어써집니다. 반드시 이 모디파이어로 설정해 주세요.
func backgroundColor(SwiftUI.Color?) -> TextField
텍스트 필드의 배경색을 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
func icon(Icon?) -> TextField
텍스트 필드 왼쪽에 표시할 아이콘을 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
func label(String?, required: Bool) -> TextField
제목(라벨)을 붙이고 필수 표시(*) 여부를 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
-
Discussion
이 모디파이어를 쓰면 텍스트 필드가 FormControl로 감싸져 라벨·메시지·액세서리가 함께 배치되고, 라벨이 입력의 접근성 라벨로 연결됩니다. FormControl을 직접 조합하는 것과 결과가 같습니다.
func labelPlacement(FormControl.LabelPlacement) -> TextField
라벨 위치를 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
func labelWidth(CGFloat) -> TextField
leading 배치에서 라벨 열의 폭을 명시적으로 고정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
-
Discussion
여러 입력의 라벨 열을 한꺼번에 맞추려면 각 입력에 반복하지 말고 FormControlGroup을 사용하세요. FormControl.LabelPlacement.top 배치에는 영향이 없습니다.
func maxLength(Int?) -> TextField
입력 가능한 최대 글자 수를 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
-
Discussion
입력/붙여넣기로 텍스트가 제한을 초과하면 앞에서부터
limit글자만 남기고 잘립니다. 글자 수는 문자(grapheme cluster) 단위로 계산됩니다.nil이면 길이를 제한하지 않습니다.
func message(String?) -> TextField
입력 아래에 표시할 도움말/에러 메시지를 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
-
Discussion
메시지 색은 status(_:)에 따라 결정되며
.negative에서만 강조 색으로 표시됩니다. 메시지는 입력의 접근성 힌트로도 연결됩니다.
func onTextChange((String) -> Void) -> TextField
텍스트가 변경될 때마다 호출할 클로저를 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
-
Discussion
변경된 전체 텍스트를 전달하므로 글자 수 계산(
text.count), 유효성 검사 등 다양한 후처리에 사용할 수 있습니다. maxLength(_:)으로 잘린 경우 잘린 뒤의 최종 텍스트가 전달됩니다.
func placeholder(String?) -> TextField
텍스트 필드에 입력된 텍스트가 없을 때 표시할 플레이스홀더를 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
func secured(Bool) -> TextField
입력한 내용을 가릴지 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
-
Discussion
비밀번호처럼 노출되면 안 되는 값을 입력받을 때 사용합니다.
Note
자동완성은 가려진 입력에서 동작하지 않습니다.
func size(Size) -> TextField
텍스트 필드의 사이즈를 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
func status(Status) -> TextField
텍스트 필드의 상태를 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
func trailingButton(TrailingButtonInfo?) -> TextField
텍스트 필드 오른쪽에 표시할 버튼을 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
func trailingContent<V>(() -> V) -> TextField
텍스트 필드 오른쪽에 표시할 커스텀 콘텐츠를 설정합니다.
-
Parameters
-
Return Value
수정된 텍스트 필드 인스턴스
enum Size
텍스트 필드의 사이즈를 정의합니다.
-
Overview
사이즈에 따라 패딩, 모서리 반경, 최소 높이, 입력 타이포그래피, 아이콘 크기가 함께 결정됩니다.
case large
큰 사이즈 (최소 높이 48)
case medium
중간 사이즈 (최소 높이 40)
enum Status
텍스트 필드의 상태를 정의합니다.
case negative
오류 상태
case normal
기본 상태
case positive
유효한 입력 상태
Conforms To
Swift.Sendable
SwiftUICore.View
