จับภาพและปล่อยโฟกัส

ในโหมดการโต้ตอบเฉพาะทาง (เช่น Canvas การวาดภาพแบบฝัง พื้นผิวของเกมคอนโทรลเลอร์ หรือกล่องโต้ตอบการป้อนข้อมูลแบบโมดอล) แอปอาจต้องล็อกโฟกัสชั่วคราวไปยังคอมโพเนนต์เดียวและป้องกันไม่ให้คีย์ Tab หรือคีย์ทิศทางนำทางออกไป

โฟกัสการจับภาพ

หากต้องการโฟกัส ให้เรียกใช้ captureFocus() ใน FocusRequester โดยทำดังนี้

val focusRequester = remember { FocusRequester() }

Box(
    modifier = Modifier
        .focusRequester(focusRequester)
        .focusable()
        .onFocusChanged { focusState ->
            if (focusState.isFocused) {
                focusRequester.captureFocus()
            }
        }
)

ขณะที่โฟกัสถูกจับ แป้นนำทางโฟกัสมาตรฐาน (เช่น Tab) จะไม่ย้ายโฟกัสไปยังคอมโพเนนต์ที่อยู่ใกล้เคียง

โฟกัสการเปิดตัว

หากต้องการออกจากสถานะที่จับภาพไว้และกู้คืนการไปยังส่วนต่างๆ ของโฟกัสปกติใน UI ให้เรียกใช้ freeFocus()

IconButton(
    onClick = {
        focusRequester.freeFocus()
    }
) {
    Icon(Icons.Default.Close, contentDescription = "Exit focus lock")
}