在cocos2d 3.2版本中,在IOS8.0以上游戏才用横竖屏都支持后,弹出输入法,或者游戏切到后台弹出输入法再切回来会引起屏幕跑偏,修复方案如下:

修改CCEAGLView.mm文件,注意第一个case的处理

-(void) doAnimationWhenKeyboardMoveWithDuration:(float)duration distance:(float)dis

{

[UIView beginAnimations:nil context:nullptr];

[UIView setAnimationDelegate:self];

[UIView setAnimationDuration:duration];

[UIView setAnimationBeginsFromCurrentState:YES];

//NSLog(@"[animation] dis = %f,scale = %f \n",dis,cocos2d::GLView::getInstance()->getScaleY());

if (dis < 0.0f) dis = 0.0f;

auto glview = cocos2d::Director::getInstance()->getOpenGLView();

dis *= glview->getScaleY();

if (self.contentScaleFactor == 2.0f)

{

dis /= 2.0f;

}

switch ([self getstatusBarOrientation])

{

case UIInterfaceOrientationPortrait:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)

{

self.frame = CGRectMake(originalRect_.origin.x,originalRect_.origin.y - dis,self.frame.size.width,self.frame.size.height);

}else{

self.frame = CGRectMake(originalRect_.origin.x,originalRect_.size.width,originalRect_.size.height);

}

break;

case UIInterfaceOrientationPortraitUpsideDown:

self.frame = CGRectMake(originalRect_.origin.x,originalRect_.origin.y + dis,originalRect_.size.height);

break;

case UIInterfaceOrientationLandscapeLeft:

self.frame = CGRectMake(originalRect_.origin.x - dis,originalRect_.origin.y,originalRect_.size.height);

break;

case UIInterfaceOrientationLandscapeRight:

self.frame = CGRectMake(originalRect_.origin.x + dis,originalRect_.size.height);

break;

default:

break;

}

[UIView commitAnimations];

}

在其他cocos版本中,采用以下方法处理:

-(void) doAnimationWhenKeyboardMoveWithDuration:(float)duration distance:(float)dis

{

[UIView beginAnimations:nil context:nullptr];

[UIView setAnimationDelegate:self];

[UIView setAnimationDuration:duration];

[UIView setAnimationBeginsFromCurrentState:YES];

//NSLog(@"[animation] dis = %f,cocos2d::GLView::getInstance()->getScaleY());

if (dis < 0.0f) dis = 0.0f;

auto glview = cocos2d::Director::getInstance()->getOpenGLView();

dis *= glview->getScaleY();

dis /= self.contentScaleFactor;

switch (getFixedOrientation([[UIApplication sharedApplication] statusBarOrientation]))

{

case UIInterfaceOrientationPortrait:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)

{

self.frame = CGRectMake(originalRect_.origin.x,originalRect_.size.height);

}

break;

case UIInterfaceOrientationPortraitUpsideDown:

self.frame = CGRectMake(originalRect_.origin.x,originalRect_.size.height);

break;

case UIInterfaceOrientationLandscapeLeft:

self.frame = CGRectMake(originalRect_.origin.x - dis,originalRect_.size.height);

break;

case UIInterfaceOrientationLandscapeRight:

self.frame = CGRectMake(originalRect_.origin.x + dis,originalRect_.size.height);

break;

default:

break;

}

[UIView commitAnimations];

}

ios键盘横屏_cocos2d 3.2版本IOS因键盘引起横竖屏问题相关推荐

  1. 如何将高版本服务器系统转为低版本,iOS高版本备份恢复到低版本系统的方法

    一般来说,在更新iOS系统的时候我们都会建议大家先用iTunes对系统进行完整备份.但时不时都会有人偷懒,或者使用手机OTA升级而没有对系统备份,最终导致不满意新系统了,想降级却无备份可以恢复的尴尬局 ...

  2. java手机游戏ios_我的世界JAVA版本ios版

    我的世界JAVA版本ios版我的世界java版本ios版是一款沙盒生存冒险游戏,游戏中玩家将会体验到一个自由建造和开放的世界,这里没有任何限制,玩家将以第一人称的视角开始这段奇妙旅程,游戏玩法多样,还 ...

  3. iOS 中横竖屏切换

    iOS 中横竖屏切换的功能,在开发iOS app中总能遇到.以前看过几次,感觉简单,但是没有敲过代码实现,最近又碰到了,demo尝试了几种情况,这里就做下总结. 注意 横屏两种情况是反的你知道吗? U ...

  4. iOS 12.3开发者版更新,iOS上划关闭动画回来了

    4月23号凌晨,苹果向开发人员推送了iOS 12.3 Developer beta 3,在高通和苹果和解后,iOS 12.3 Developer beta 3 国行版本清除后台的上滑动画效果终于回归, ...

  5. ios键盘横屏_iOS横竖屏旋转及其基本适配方法 转

    目录 一.最让人纠结的三种枚举 二.两种屏幕旋转的触发方式 三.屏幕旋转控制的优先级 四.开启屏幕旋转的全局权限 五.开启屏幕旋转的局部权限(视图控制器) 六.实现需求:项目主要界面竖屏,部分界面横屏 ...

  6. ios键盘横屏_iOS 强制横屏、部分横屏等功能实践

    需求如下: 1.app整体只能竖屏,部分页面才可以横屏 2.app整体只能竖屏,部分页面也是竖屏,但是点击某个按钮可以使当前页面变为横屏,如全屏视频播放键. 需求1解决方法: 1.在targets - ...

  7. 不同版本iOS的特性和差异

    1.iPhone OS 2.0 苹果在2008年3月6日iPhone SDK Roadmap会上正式介绍了iPhone OS 2.0.这个版本的获得的重要更新可以分成一下4大类: -企业增强 -微软E ...

  8. iOS -- ipad横屏应用的设置

    1.支持横竖屏,但默认打开时是横屏 [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationL ...

  9. iOS下Html页面中input获取焦点弹出键盘时挡住input解决方案

    iOS下Html页面中input获取焦点弹出键盘时挡住input解决方案 参考文章: (1)iOS下Html页面中input获取焦点弹出键盘时挡住input解决方案 (2)https://www.cn ...

最新文章

  1. 图像检索:几种基于纹理特征的图像检索算法
  2. Ajax实战:Ajax的四个基本原则
  3. 多IE版本共存的解决方案—IETester(推荐)
  4. 苹果电脑可以装windows系统吗_不只是桌面,这个 Windows 皮肤可以帮你全局美化 Windows 系统
  5. Harvard-X免费生物信息课程 (代码、文档、数据) - 适合系统学习
  6. silverlight 不可
  7. php xingnengfenxi_php代码性能分析方法
  8. vue中的 $children 和 $parent
  9. 吴恩达机器学习(四)逻辑回归(二分类与多分类)
  10. silverlight如何通过单独部署的WCF站点访问sharepoint2013的图片库
  11. 如何成为一名卓越的数据科学家-桃树七剑之二:数据准备
  12. 51Nod1601 完全图的最小生成树计数 Trie Prufer编码
  13. 简单使用mybatis(idea中使用)
  14. [编译原理课设] 自动机的状态转换图表示
  15. Gluster FS 部署复制卷与常用命令 常见问题解决
  16. 批量出售QQ群idcnd传媒提供
  17. Java使用Spire.Doc将多个word里的内容合并到一个word里边,格式保留
  18. POI导出Excel 无法居中问题
  19. MYSQL外键约束和表关联
  20. 通过例子学TLA+(七)--操作符

热门文章

  1. ClickHouse【资源分享 01】Linux环境 clickhouse-19.7.3.9 离线安装文件分享(百度云盘)
  2. 04 | 负载均衡:Ribbon 如何保证微服务的高可用
  3. track文件 什么是git_git常用命令
  4. 分析约瑟夫问题(循环单链表)
  5. spring-bean依赖注入-03
  6. 跨域(CORS)请求问题[No 'Access-Control-Allow-Origin' header is present on the requested resource]常见解决方案
  7. CG CTF PWN When did you born?
  8. java indexof 忽略大小写_javascript的indexOf如何才能忽略大小写
  9. mybatis-plus代码生成器使用和代码
  10. Struts学习总结之配置文件