기어가더라도 제대로

[SwiftUI-기초] TextField 본문

SwiftUI - 기초

[SwiftUI-기초] TextField

Damagucci-juice 2022. 10. 7. 09:09

TextField

  • 필드에 쓰인 값을 들고 있을 변수가 필요 
  • 변수는 @State 로 선언되어야 하고, 양방향 바인딩으로 초기값을 표시 가능
  • 이를 String이 아닌 숫자를 쓰고 싶다고 하면 어떻게 사용하면 좋을까?
  • Double을 text 파라미터에 넘기려면 오류가 나는데, value 파라미터에 넘기면 문제가 나지 않는다.
  • 다만 이 value를 어떤 방식으로 표시할 것인지 정해줘야하는데 여기선 화폐로 하기로 하였다. 

지역 전용화폐 우선

  • 위의코드는 모든 사용자가 달러 표시된 금액을 보아야 하는데, 달러 생활권 이외의 국가 사용자일 수 있으니 그 점을 염두에 두어야 한다.

하나씩 풀어가보겠습니다. 

Locale

  • 사용자의 지역 설정 값을 저장하는 구조체
  • 사용하는 달력, 1000 단위 숫자의 구별법, 미터법 등을 사용하는지 여부 포함

TextField 

  1. "Amount" : 이 칸의 placeholder입니다. 
  2. value: 사용하려는 값을 나타내는 파라미터입니다.
  3. format: 위의 value를 여기 오는 형태로 표시하겠다는 파라미터입니다.
  • 여기서 Text Field에 우리가 사용할 값을 넣으면 자동적으로 다음 섹션의 Text에 까지 영향을 주게 되는데
  • 이는 SwiftUI 자체의 기능 특성 때문이기도 하다. 

SwiftUI의 특성

  1. text field는 checkAmount 속성을 양방향 바인딩(two-way binding)으로 가지고 있다.
  2. checkAmount 속성은 @State 가 되어있고, 이는 자동적으로 값의 변화를 감시한다. 
  3. @State 속성에 변화가 일어나면, SwiftUI는 body 속성을 재시동할 것이다. 
  4. 따라서 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

Comments