cocos2d.x.version: 2.1rc0-x-2.1.4
一直没有时间升级…… 最近对旧项目在XCode7下重新编译,发现了很多很多问题……
一个重要的问题是:输入框CCEditBox接收焦点后,画面马上偏移!无法正常使用。
搜索了许多资料,总结解决方法如下:
1、官方的方法是在:
https://github.com/cocos2d/cocos2d-x/pull/8149
2、按照1修改后,能够进入输入了,画面不移动了,但是输入完成后,画面还是跑了!
再进行下述修改,则问题解决,并验证了iOS7等系统下正常运行!
CCEAGLView-ios.mm
-(void) doAnimationWhenKeyboardMoveWithDuration:(float)duration distance:(float)dis
switch (getFixedOrientation([[UIApplication sharedApplication] statusBarOrientation]))
{
case UIInterfaceOrientationPortrait:
self.frame = CGRectMake(originalRect_.origin.x, originalRect_.origin.y - dis, originalRect_.size.width, originalRect_.size.height);
break;
case UIInterfaceOrientationPortraitUpsideDown:
self.frame = CGRectMake(originalRect_.origin.x, originalRect_.origin.y + dis, originalRect_.size.width, originalRect_.size.height);
break;
case UIInterfaceOrientationLandscapeLeft:
self.frame = CGRectMake(originalRect_.origin.x - dis, originalRect_.origin.y , originalRect_.size.width, originalRect_.size.height);
break;
case UIInterfaceOrientationLandscapeRight:
self.frame = CGRectMake(originalRect_.origin.x + dis, originalRect_.origin.y , originalRect_.size.width, originalRect_.size.height);
break;
default:
break;
}
修改成
switch (getFixedOrientation([[UIApplication sharedApplication] statusBarOrientation]))
{
case UIInterfaceOrientationPortrait:
self.frame = CGRectMake(originalRect_.origin.x, originalRect_.origin.y - dis, self.frame.size.width, self.frame.size.height);
break;
case UIInterfaceOrientationPortraitUpsideDown:
self.frame = CGRectMake(originalRect_.origin.x, originalRect_.origin.y + dis, self.frame.size.width, self.frame.size.height);
break;
case UIInterfaceOrientationLandscapeLeft:
self.frame = CGRectMake(originalRect_.origin.x - dis, originalRect_.origin.y , self.frame.size.width, self.frame.size.height);
break;
case UIInterfaceOrientationLandscapeRight:
self.frame = CGRectMake(originalRect_.origin.x + dis, originalRect_.origin.y , self.frame.size.width, self.frame.size.height);
break;
default:
break;
}