SwiftUI/SwiftUI 문법

[SwiftUI] @FocusState 알아보기

hyunjuntyler 2023. 5. 21. 02:11

@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" 라는 버튼을 만들어 주었고, 이 버튼을 누를 때마다 textFocustrue, false 를 왔다 갔다 하게 되고, TextField 도 선택되고 안되고를 버튼으로 결정할 수 있다.

또한 아래와 같은 코드를 추가하게 된다면 앱을 키자마자 자동으로 TextField 가 선택되게 할 수 있다. 뷰 로드를 위해 약간의 딜레이를 줬다.

.onApperar {
	DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
    	self.textFocus = true
    }
}

 

참고

datePicker@FocusState 가 적용되는지 실험해 봤는데 쓸 수 없었다.