ios应用webview内小游戏,安全区导致无法全屏

  • Creator 版本: 2.4.3

  • 目标平台: ios 某APP内的webview

  • 重现方式:必现

  • 首个报错: 未报错

  • 手机型号: iphonex及以上异形屏的iphone

  • 重现概率: 必现

与某APP合作,在app内webview做的一款将要上线Android和ios的猜歌游戏,游戏在安卓上正常,异形屏的ios内底部会有白边。
在老款IOS设备上正常(如iphone6)。
模块设置中,SafeArea安全区模块未勾选,游戏里也没有用过该组件。
尝试在社区内搜索,并使用https://forum.cocos.org/t/cocos-creator-v2-2-1-rc-9/85555/355?u=470866008,并没有解决问题。


canvas设置



iPhone默认浏览器进入游戏隐藏工具栏后尺寸正常

app内底部的白边

app内游戏跳转广告正常

定位到问题了,adjustContentInset这个属性的高度影响了窗口的尺寸。
但我早晨试过cocos2d-x\cocos\ui\webview/WebViewImpl-ios.mm 这类的 setupWebView增加下面这段代码,没有作用。
if (@available(iOS 11.0, *)) {
self.uiWebView.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
不知道是不管用还是没生效,有没有大佬指个明路?更改引擎后要做什么才能生效?

使用gulp命令改的引擎代码才会有效。 可以试试

'./cocos2d-x\cocos\ui\webview/WebViewImpl-ios.mm’我修改的这处位置,好像跟gulp关系不大,gulp定制JS引擎的目录是‘./engine’,我看了下原生平台,好像之后的定制 Cocos2d-x-lite 引擎我这里应该是用不到

@jare 看到这篇帖子,我替换了个网页到同一个链接下,跳转过去正常,App 内的 WebView没问题。
大佬帮忙看看

请问你的问题解决了么?

没有,暂时不去管它了

感谢回复。。我这边还是再试试吧 有处理方案的话同步给你。

好的,果然即使发帖没找到解决方法,也还是有价值的 :laughing:

来自哲锋大佬的分享 你可以看看对你的问题有没有帮助。
http://note.youdao.com/noteshare?id=2d161d5dd4847b955817b3e2922a9017&sub=WEB59b6f9546b095f0d75d1c997022038bc
我这边因为其他原因没能直接用这套方案,所以不确定是不是有效。
我这边是参考了分享 直接修改了CCView.js中 availWidth和availHeight方法的实现,直接返回window.innerWidth和window.innerHeight。 然后修改webview构建包的index.html,监听size事件并主动修改window.innerWidth和window.innerHeight。(令其对应加上_safeAreLeft等值)
如window.innerWidth = window.innerWidth + _safeAreLeft + _safeAreRight
需要注意的是避免多次执行这个回调方法(我这边暂时判断window.innerHeight==document.getElementsByTagName(‘html’)[0].clientHeight为真时去修改)

1赞

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。