You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Compose Multiplatform中BackHandler在iOS端失效问题及示例求助

Compose Multiplatform中BackHandler在iOS端失效问题及示例求助

我正在开发一个基于Compose Multiplatform 1.8.0的KMM应用,已经添加了ui-backhandler依赖:

ui-backhandler = { module = "org.jetbrains.compose.ui:ui-backhandler", version.ref = "compose-multiplatform" }

以下是我的核心代码实现:

共享Compose代码

@Composable
@Preview
fun App(
    navController: NavHostController = rememberNavController(),
) {
    KoinContext {
        MyTheme {
            Scaffold() { innerPadding ->
                NavHost(
                    navController = navController,
                    startDestination = Screen.Dashboard.name
                ) {
                    composable(route = Screen.MyGroups.name) {
                        GroupsScreen(
                            navigateUp = { navController.navigateUp() }
                        )
                    }
                }
            }
        }
    }
}

@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun GroupsScreen(
    navigateUp: () -> Unit
) {
    BackHandler(enabled = true) {
        navigateUp()
    }
    // 其他UI实现代码
}

iOS端代码

iosMain中的Kotlin入口

fun MainViewController() = ComposeUIViewController {
    App()
}

SwiftUI层封装代码

struct ComposeView: UIViewControllerRepresentable {
    func makeUIViewController(context: Context) -> UIViewController {
        MainViewControllerKt.MainViewController()
    }
    
    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}
}

struct ContentView: View {
    var body: some View {
        ComposeView()
            .ignoresSafeArea(edges: .all)
            .ignoresSafeArea(.keyboard)
    }
}

我原本以为这套实现已经能让BackHandler正常工作,但在iOS设备上左边缘的返回手势完全无法触发页面关闭,BackHandler似乎根本没生效。

现在有两个问题想请教大家:

  • 我的代码哪里可能存在问题,导致iOS端的BackHandler失效?
  • 哪里能找到Compose Multiplatform在iOS上使用BackHandler的完整示例?我在官方仓库里找不到任何相关示例,尝试给示例文件夹里的项目添加BackHandler时,要么项目版本过时,要么只有单个页面,根本没法测试返回逻辑。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 07:34:34