포커스 이동 및 지우기

FocusManager를 사용하면 방향으로 포커스를 이동하거나 완전히 지울 수 있습니다. 직접 구성요소 타겟팅에는 FocusRequester를 사용합니다 (프로그래매틱 방식으로 포커스 요청 참고).

FocusManager를 사용한 방향 포커스 이동

상대 방향으로 프로그래매틱 방식으로 포커스를 이동하려면 다음을 실행하세요.

  1. LocalFocusManager.current를 사용하여 FocusManager 인스턴스를 가져옵니다.
  2. FocusDirection 값 (Next, Previous, Up, Down, Left, Right, Enter 또는 Exit)으로 moveFocus()를 호출합니다.

val focusManager = LocalFocusManager.current

Button(
    onClick = {
        focusManager.moveFocus(FocusDirection.Next)
    }
) {
    Text("Next Field")
}

포커스 지우기

현재 포커스를 보유한 요소에서 포커스를 삭제하려면(예: 사용자가 Esc 키를 누른 경우) clearFocus()를 호출합니다.

val focusManager = LocalFocusManager.current

Box(
    modifier = Modifier.onPreviewKeyEvent { keyEvent ->
        if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) {
            focusManager.clearFocus()
            true
        } else {
            false
        }
    }
)

clearFocus() 함수는 선택적 force: Boolean = false 매개변수를 허용합니다.

  • force = false (기본값): 포커스 잠금을 따르며 활성 구성요소가 포커스를 캡처한 경우 포커스를 지우지 않습니다.
  • force = true: 구성요소가 포커스를 캡처한 경우에도 무조건 포커스를 지웁니다.