返回键监听与拦截
onBackPressed(callback)
Section titled “onBackPressed(callback)”监听用户按下返回键事件,并可以选择拦截。同一时间只有一个监听器生效,后注册的覆盖前面的。
SuperSDK.onBackPressed(() => { if (hasUnsavedData) { showConfirmDialog(); return true; // 返回 true:拦截返回,页面不关闭 } return false; // 返回 false:不拦截,执行默认返回逻辑});callback 返回值说明:
| 返回值 | 行为 |
|---|---|
true | 拦截返回键,页面停留在当前页,不执行默认返回逻辑 |
false | 不拦截,执行默认返回逻辑(有历史则后退,否则关闭页面) |
undefined(无返回值) | 等同于 false,不拦截 |
使用场景示例:
// 场景1:离开页面前确认SuperSDK.onBackPressed(() => { if (formModified) { const confirmed = confirm('有未保存的修改,确定离开吗?'); if (!confirmed) { return true; // 用户选择留下,拦截返回 } } return false; // 允许返回});
// 场景2:自定义返回逻辑(如关闭弹窗)SuperSDK.onBackPressed(() => { if (isModalOpen) { closeModal(); return true; // 关闭弹窗,拦截返回 } return false; // 无弹窗,正常返回});offBackPressed()
Section titled “offBackPressed()”取消返回键监听,恢复默认返回行为。
SuperSDK.offBackPressed();注意事项:
- callback 必须同步返回结果,不支持异步(async/await)
- callback 执行超时(>300ms)时,Native 自动执行默认返回逻辑,防止卡死
- Android 物理返回键和手势返回均会触发
- iOS 目前仅导航栏返回按钮会触发,侧滑返回手势暂不支持拦截