项目中,一般都有自定义的一个 Web
界面,用于显示各种 H5
页面
从 H5
触发事件,跳转原生界面,也是常见需求
这次遇到的问题是:
从 H5
跳转到 原生
界面后,使用系统的 左滑返回
手势,导致了 界面卡死
通过在 Xcode
上查看当前界面的 视图层次结构
发现一个神奇的现象!
视图层次结构
中,最顶层
界面,其实已经是 H5
页面了!
但手机上显示的界面,却还是 原生
界面!?
0x01 猜测
有可能是 WKWebView
的 allowsBackForwardNavigationGestures
设置为 YES
导致的吗?与系统的左滑返回冲突了?
实际测试,不是!
因为设置
_WkWebView.allowsBackForwardNavigationGestures = YES;
时
已经把系统的左滑返回手势关闭了
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
思来想去,想不明白…
0x02 恍然大悟
第二天,也就是今天
突然想到,是不是关闭系统左滑手势的时机不对呢?
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
在 view
将要
显示
的时候,就给它关闭了
都还没显示完呢
于是,改成了
在 view
已经
显示
的时候,再
给它关闭了
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
果然!
就是 时机
的问题!!
问题就这么解决了 😂 ~
0x03 小笔记应用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)