EditBox软键盘输入问题

我们游戏的充值选项是走webview的,但是如果游戏中存在过EditBox组件,那么再进入webview唤起软键盘,点击软件盘的Done按键时,会出现一个视图显示的bug,但是原位置上的Button还是可用的,而且webview的触摸输入事件也会有几率消失,玩家无法唤起软键盘输入文字,只有退出游戏重进才会消失。这个bug在ios上会必现,android不会。

我制作了一个可以复现的Demo,并附上演示视频。希望大家可以帮帮我这个菜鸟。谢谢了。谢谢了。
test.zip (1.6 MB)

video1.zip (2.0 MB)

新建一个Hello World 项目,替换Demo中的assets 构建后替换proj.ios,然后再Xcode里面打包

video2.zip (2.1 MB)

使用了屏幕旋转,从横屏显示旋转成了竖屏显示

来人啊,救命啊

打不开啊 =》can not find project.json

新建一个Hellow world 再替换 assets

救命啊

你只说了你的损失很严重。但是你没有告诉大家,有人帮你解决了,他能获得什么。哈哈哈

以身相许啊啊啊啊,麒麟子大大

来人啊

真的要哭出来了,太冷漠了。

解决了跟大家分享一下啊

秘诀:自己做一个软键盘,别用editbox和系统自带的软键盘。
100元哈~

cocos 会监听键盘弹出和收起的事件对 view 做上下移动处理, 我猜测在 webview 中键盘收起的事件被 cocos 监听到了, 所以触发了 view 的 bug.

监听代码位于:

/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/platform/ios/CCEAGLView-ios.mm 的 onUIKeyboardNotification 函数, 你可以加个断点看是否进入了, 或者看日志中是否有: offestY = .

如果真的是这样的话, 解决方案就是让 cocos 不响应 webview 中的键盘收起事件. 比如可以在打开 webview 时设置一个变量, 关闭时重置这个变量, 然后在这段代码中处理下这个变量即可.

楼上正解

你这个回答也太。。。。。笼统了。。。

谢谢大佬,请发支付宝,如果解决了,会给你转账的

有什么方法可以在不改动底层来解决这个办法吗?项目已经上线的,这个改动热更新是不是修正不了?强制换包的话用户会流失很多的。。。

可以在打开webview时把这个 editbox 删除掉, 关闭 webview 时再加回来, 我不知道隐藏起来行不行, 你可以试一下.

隐藏和删除都不行,我试过了,只要游戏出现过editBox,就一直存在这个错误,除非进程结束重进