Language/Swift

SwiftUI를 이용한 텍스트 입력하기 (TextField)

IFLA 2022. 11. 24. 08:00

 

UI를 그리다보면 사용자가 입력해야하는 부분이 생긴다. 그럴때 사용하는 뷰가 TextField란 뷰를 이용해 사용자가 값을 입력하게 한다.

 

기본코드

import SwiftUI

struct ContentView: View {
    @State private var name = ""

    var body: some View {
        VStack {
            TextField("이름", text: $name)
                .padding()
            Text("당신의 이름은 \\(name) 입니다.")
        }
    }
}

 

실행화면

 

 

속성

  • NumberFormatter : 숫자를 표시하기 위해 사용하는 포맷
  • KeyboardType : 키보드의 종류를 설정
    • .default
    • .decimalPad : 숫자 키패트 설정
    • .asciiCapable : ASCII 코드 문자를 입력하는 키패드 설정
    • .URL : URL 입력에 최적화된 키패드를 설정
    • .numberPad : 숫자 입력
    • .phonePad
    • .namePhonePad
    • .emailAddress : 이메일 주소 입력에 맞게 키패드 설정
    • .twitter
    • .webSearch
    • asciiCapableNumberPad
    • .alphabet
  • .disableAutocorrection() : 자동수정 활성화
  • .textCase : 글자의 대소문자 설정
    • .textCase(.lowercase) : 소문자로 설정
    • .textCase(.uppercase) : 대문자로 설정
    • . textCase(.none) : 사용자 지정

 

struct ContentView: View {
	@State private var score = 0

	let formatter: NumberFormatter = {
		let formatter = NumberFormatter()
		formatter.numberStyle = .decimal
		return formatter
	}()

	var body: some View {
		VStack {
			TextField("점수", value: $score, formatter: formatter)
				.textFieldStyle(RoundedBorderTextFieldStyle())
				.padding()
			Text("당신의 점수는 \\(score) 입니다.")
		}
	}
}

 

키보드 비활성화

  • UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
  • 위 코드가 복잡하기 때문에 extension 으로 래핑하는 것을 고려해야 한다.

 


개발자 Document

https://developer.apple.com/documentation/swiftui/textfield

 

Apple Developer Documentation

 

developer.apple.com