@FocusState 는 아주 간단하다. 말 그대로 Focus 되어있는지 안되어 있는지를 관리한다. 보통 TextField 를 만들게 되면 유저들이 text 를 써넣을 때 클릭해야 하는데 @FocusState 를 활용하면 자동으로 선택되어 있게 만들 수 있다.
TextField 만들기
우선 @FocusState 를 사용하기 위해서는 TextField 를 만들어 줘야 한다. 아래와 같은 코드로 간단한 TextField 를 만들어 보았다.
이제 간단하다 @FocusState 를 통해 Bool 타입의 textFocus 변수를 선언해 주고, 해당되는 TextField 앞에 .focused($textFocus)
를 입력해 주면 된다.
이제 textFocus 라는 변수는 TextField 가 선택되면 true 값이 되고, 선택되지 않으면 false 값이 될 것이다. 반대로 내가 textFocus 변수를 true 로 만들어 준다면 TextField 가 선택될 것이다. 이를 사용하여 버튼을 활용하여 TextField 를 선택하게 할 수 도 있다. 아래는 "toggle textFocus" 라는 버튼을 만들어 주었고, 이 버튼을 누를 때마다 textFocus 는 true, false 를 왔다 갔다 하게 되고, TextField 도 선택되고 안되고를 버튼으로 결정할 수 있다.
또한 아래와 같은 코드를 추가하게 된다면 앱을 키자마자 자동으로 TextField 가 선택되게 할 수 있다. 뷰 로드를 위해 약간의 딜레이를 줬다.
.onApperar {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
self.textFocus = true
}
}
참고
datePicker 도 @FocusState 가 적용되는지 실험해 봤는데 쓸 수 없었다.
'SwiftUI > SwiftUI 문법' 카테고리의 다른 글
[SwiftUI] @AppStorage 알아보기 (0) | 2023.05.21 |
---|---|
[SwiftUI] @EnvironmentObject 알아보기 (0) | 2023.05.20 |
[SwiftUI] @StateObject 알아보기 (0) | 2023.05.20 |
[SwiftUI] @Published, @ObservedObject 알아보기 (0) | 2023.05.20 |
[SwiftUI] @Binding 알아보기 (0) | 2023.05.20 |