기어가더라도 제대로
[SwiftUI-기초] TextField 본문
TextField
- 필드에 쓰인 값을 들고 있을 변수가 필요
- 변수는 @State 로 선언되어야 하고, 양방향 바인딩으로 초기값을 표시 가능
- 이를 String이 아닌 숫자를 쓰고 싶다고 하면 어떻게 사용하면 좋을까?
- Double을 text 파라미터에 넘기려면 오류가 나는데, value 파라미터에 넘기면 문제가 나지 않는다.
- 다만 이 value를 어떤 방식으로 표시할 것인지 정해줘야하는데 여기선 화폐로 하기로 하였다.
지역 전용화폐 우선
- 위의코드는 모든 사용자가 달러 표시된 금액을 보아야 하는데, 달러 생활권 이외의 국가 사용자일 수 있으니 그 점을 염두에 두어야 한다.
하나씩 풀어가보겠습니다.
Locale
- 사용자의 지역 설정 값을 저장하는 구조체
- 사용하는 달력, 1000 단위 숫자의 구별법, 미터법 등을 사용하는지 여부 포함
TextField
- "Amount" : 이 칸의 placeholder입니다.
- value: 사용하려는 값을 나타내는 파라미터입니다.
- format: 위의 value를 여기 오는 형태로 표시하겠다는 파라미터입니다.
- 여기서 Text Field에 우리가 사용할 값을 넣으면 자동적으로 다음 섹션의 Text에 까지 영향을 주게 되는데
- 이는 SwiftUI 자체의 기능 특성 때문이기도 하다.
SwiftUI의 특성
- text field는 checkAmount 속성을 양방향 바인딩(two-way binding)으로 가지고 있다.
- checkAmount 속성은 @State 가 되어있고, 이는 자동적으로 값의 변화를 감시한다.
- @State 속성에 변화가 일어나면, SwiftUI는 body 속성을 재시동할 것이다.
- 따라서 text 뷰 또한 checkAmount의 업데이트된 값을 획득한다.
텍스트 필드 첫글자 편집 옵션
.textInputAutocapitalization(.never)
켜자마자 숫자 키보드를 보여주고 싶다면
- 우리 text field는 주로 숫자를 입력함
- 숫자 패드로 넘어가는 번거로움을 프로그래밍이 줄여주자.
- text field의 modifier를 이용해야 함
- 이렇게 해도 사용자가 물리 키보드로 타이핑하는 문자열이나 복사-붙여 넣기로 text field에 넣는 값을 제한할 수 없지만,
- 완료가 될 때 text field 가 알아서 걸러서 반환
focus 별로 textfield 를 옮겨다니는 방법 링크 첨부
https://www.kodeco.com/31569019-focus-management-in-swiftui-getting-started
'SwiftUI - 기초' 카테고리의 다른 글
[SwiftUI-기초] HStack, VStack, ZStack (0) | 2022.10.09 |
---|---|
[SwiftUI-기초] Picker, Segment Control, Keyboard 반응 (0) | 2022.10.08 |
[SwiftUI-기초] 양방향 바인딩(two-way binding), ForEach (0) | 2022.10.06 |
[SwiftUI-기초] Form, Navigation bar, State (1) | 2022.10.05 |
[SwiftUI-기초] SwiftUI의 기본 구조 (0) | 2022.10.04 |
Comments