跳转到内容

返回键监听与拦截

监听用户按下返回键事件,并可以选择拦截。同一时间只有一个监听器生效,后注册的覆盖前面的。

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; // 无弹窗,正常返回
});

取消返回键监听,恢复默认返回行为。

SuperSDK.offBackPressed();

注意事项:

  1. callback 必须同步返回结果,不支持异步(async/await)
  2. callback 执行超时(>300ms)时,Native 自动执行默认返回逻辑,防止卡死
  3. Android 物理返回键和手势返回均会触发
  4. iOS 目前仅导航栏返回按钮会触发,侧滑返回手势暂不支持拦截