文档管理中心
FAQ应用质量技术质量稳定性应用在弹窗消失后页面暗屏,点击侧滑无响应

应用在弹窗消失后页面暗屏,点击侧滑无响应

问题现象

应用在使用过程中,在弹窗出现并消失后,屏幕变暗,点击侧滑都无响应。

背景知识

不依赖UI组件的全局自定义弹出框 (openCustomDialog):推荐使用UIContext中获取到的PromptAction对象提供的openCustomDialog接口在相对应用复杂的场景来实现自定义弹出框,相较于CustomDialogController优势点在于页面解耦,支持动态刷新。

问题定位

  1. 查看hilog日志,检查到手势事件的触碰测试touch test hitted recognizer识别到的组件为Dialog。
    04-21 20:13:44.471 59131 59266 I C02805/com.hm.example/InputKeyFlow: [][OnPointerEvent:216] ac: down: 9015
    04-21 20:13:44.471 59131 59266 I C02805/com.hm.example/InputKeyFlow: [P:D:9015][OnPointerEvent:572] id:9015 recv
    04-21 20:13:44.471 59131 59266 I C04213/com.hm.example/InputKeyFlow: [] OnInputEvent(86): eid:68,InputId:9015,wid:47,ac:2
    04-21 20:13:44.472 59131 59266 I C04213/com.hm.example/InputKeyFlow: [] ConsumePointerEventInner(902): InputId:9015,wid:47,pointId:0,srcType:2,rect:[0,0,1224,2776],notify:1
    04-21 20:13:44.472 59131 59131 I C03951/com.hm.example/InputKeyFlow: [(100000:100000:scope)] InputTracking id:9015, fingerId:0, type=0, inject=0, isPrivacyMode=0
    04-21 20:13:44.472 59131 59131 I C03951/com.hm.example/InputKeyFlow: [(100000:100000:scope)] InputTracking id:9015, touch test hitted node info: fingerId: 0{ tag: Dialog, depth: 2 };
    04-21 20:13:44.472 59131 59131 I C03951/com.hm.example/InputKeyFlow: [(100000:100000:scope)] InputTracking id:9015, touch test hitted recognizer type info: recognizer type ClickRecognizer node info: { tag: Dialog };
    04-21 20:13:44.472 59131 59131 I C03919/com.hm.example/AceInputTracking: [(100000:100000:scope)] Consumed new event id=9015 in ace_container, lastEventInfo: id:9013
  2. 往前排查,日志中可以看到曾有自定义弹窗打开open custom dialog,并且焦点也移到了Dialog上focus on focusView: Dialog。
    04-21 20:13:14.569 59131 59131 I C0390D/com.hm.example/AceOverlay: [(100000:100000:scope)] open custom dialog isShowInSubWindow 0
    04-21 20:13:14.569 59131 59131 I C0390F/com.hm.example/AceDialog: [(100000:100000:scope)] dialog GetContext fontScale : 1.000000
    ...
    04-21 20:13:14.726 59131 59131 I C0391C/com.hm.example/AceFocus: [(100000:100000:scope)] FocusView: Dialog/907 show
    04-21 20:13:14.726 59131 59131 I C0391C/com.hm.example/AceFocus: [(100000:100000:scope)] FocusView: AlertDialog/862 lost focus
    04-21 20:13:14.733 59131 59131 I C0391C/com.hm.example/AceFocus: [(100000:100000:scope)] Request focus on focusView: Dialog/907.
    04-21 20:13:14.734 59131 59131 I C0391C/com.hm.example/AceFocus: [(100000:100000:scope)] Focus view has no default focus.
    04-21 20:13:14.734 59131 59131 I C0391C/com.hm.example/AceFocus: [(100000:100000:scope)] FocusSwitch end, Column/secure_field onBlur, BuilderProxyNode/secure_field onFocus, start: 2, end: 1, update: 2
  3. 查看closeCustomDialog接口,检查所有弹窗是否正确关闭。

分析结论

页面弹窗未正确关闭,应用上层有弹窗的透明窗口,拦截了手势事件导致无响应。

修改建议

参考文档自定义弹出框的打开与关闭中的代码示例,修改弹窗关闭逻辑。

在 FAQ 中进行搜索
请输入您想要搜索的关键词