IOS中,editbox导致界面出错如何解决

wemen 2016-11-15 05:52:00
游戏开始是竖屏,在进入游戏里面后转成横屏,然后在使用editbox时,界面会出错。

ps : 检查过CCEAGLView-ios.mm,已经是getFixedOrientation([[UIApplication sharedApplication] statusBarOrientation]



...全文
1244 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wemen 2016-11-28
  • 打赏
  • 举报
回复
确实,cocos感觉越来越坑了
avi9111 2016-11-18
  • 打赏
  • 举报
回复
我现在在写u3d 同样的官方ui库也是一个大问题 只不过人家版本多,也不乱,稳定很多 u3d确实是跨国大公司,不是触控可比 我还是认为官方的很烂,和一般程序猿看法不一样 我也不想争辩什么了 人应该圆滑点 u3d官方圆滑的地方在于,有3~4套官方的,前2年gui吧,你ngui做的好,就把你也纳入进来,还建议大家忘了gui 而不是触控官网,几年不更新, 一般程序猿还以为是“圣经” 真和人家国外的没法比啊。。。。。。。。。。。。。
avi9111 2016-11-18
  • 打赏
  • 举报
回复
这么做重定位 而不是抽象一个layout层出来 这样的ui本来就很low 定位不应该在editbox处理的,但是这个代码就这么处理了 ”官方“是不是就是好? 你自己判断吧 我第一感觉就觉得有问题了,没说错吧? 如果他不是做了重定位 同样一个editbox,旋转的时候是不会出错的,理论上,个人感觉上你也觉得不应该出错吧,他其实就应该不出错的
avi9111 2016-11-18
  • 打赏
  • 举报
回复
13年~15年我写了2年coocs2dx, lua用的比较多 其实cocos2dx真的用的不多,特别是他那些默认的cc ui库 那2年已经证明坑很多,甚至我11~13年,前2年也证明是坑很多 最大的笑话就是cocoa studio和cocos2d-html5 除了cocos2d移植过来那块sprite和touch manager证明是好的 触控的官网的xx推荐我就没信过 并不是“官网”就是好的 你这个错误再次证明,开源,没测试过的“官方”的,还没有民间的独立开发者写得好 因为决定因素是需求,独立开发者的需求比拿触控工资又不在总部北京的那些初级程序员,写出来的代码质量要靠谱很多 说远了 你的唯一的解决方法就是去民间论坛问清楚原因,以及和你一起踩过这个坑的同仁,改cceditbox的c++源码 别无其它方法,但我比你幸运,我那时候大牛还是比较多的,现在该走的都走了吧 当然还有另外的方法,第三方的editbox,我觉得要是你没信心改官方源码,这些editbox还好,你先看看你公司有没其它工作室有相关的好用的editbox的代码,是我喔肯定选第三方的。。。。。。这就是我工作室和你工作室的差别,不黑不吹,坑肯定比你少
avi9111 2016-11-16
  • 打赏
  • 举报
回复
从代码里面没看出来和editbox有什么关系 只看到你用了重定位的方法 你是不是觉得每个界面这么做很爽? 上面题外话 其实如果你觉得是editbox的问题 那很多原因,其实和android都很像,当然或者android有更好的解决方法,或者android程序猿的写法能更好的避免这个问题 这个问题的原因一般就是 旋转的时候 uikit初始化了,所有component都被清空让后初始化了 而你这个重定位方法,在初始化前调用了 怎么可能?确实是这样的,而且代码还是你写的 当然也可能不是你先写的 在这些compoent再次初始化之前已经调用这个重定位 会不会造成editbox.x = 10,是空指针调用呢,所以就出错了 一般都是这个问题。 只要问题原因,解决方案很多 当然从你这个代码看不出原因
wemen 2016-11-16
  • 打赏
  • 举报
回复
@avi9111 我贴出来的代码不是我写的,是cocos框架本身的代码,之所以贴出来是因为有些人回答过类似的问题,解决方法是修改红色方框里的内容,然而在转屏之后还是会出现这个BUG http://discuss.cocos2d-x.org/t/cocos2dx2-2-5-on-ios8-cceditbox-make-the-main-view-appear-error/17042 http://www.cocoachina.com/bbs/read.php?tid-276362.html 我是正常使用输入框控件的时候出错,具体是,一开始游戏是竖屏,使用输入框控件一切正常,转成横屏后再使用输入框就出问题了 输入框使用代码: self.IDInput = cc.ui.UIInput.new({ image = "GameSet/Input/0.png", size = cc.size(190,50)}) self.IDInput:setFont("fonts/FontNormal.ttf",20) self.IDInput:setAnchorPoint(0.5,0.5) self.IDInput:setPosition(wdt*0.5,het*0.7) self.IDInput:setFontColor(cc.c4b(0, 0, 0, 255)) self.IDInput:setPlaceHolder("玩家ID") self.IDInput:setMaxLength(19) self:addChild(self.IDInput) if (cc.PLATFORM_OS_ANDROID == targetPlatform) then self.IDInput:setReturnType(cc.KEYBOARD_RETURNTYPE_DONE) self.IDInput:setInputMode(cc.EDITBOX_INPUT_MODE_NUMERIC) else self.IDInput:setReturnType(cc.KEYBOARD_RETURNTYPE_DONE) self.IDInput:setInputMode(cc.EDITBOX_INPUT_MODE_SINGLELINE) end

721

社区成员

发帖
与我相关
我的任务
社区描述
Cocos2d-x相关内容讨论专区
社区管理员
  • Cocos2d-x
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧