升级IOS5之后程序遇到需要修改的部分(持续更新中)
2011-12-12 11:06
701 查看
最近升级了Xcode4.2,结果编译之后发现程序的很多地方都不能用,或者出问题,所以结合网友们的情况把遇见的列出来:
1.[self.parentViewController dismissModalViewControllerAnimated:YES]不起作用
需要修改为: [self dismissModalViewControllerAnimated:YES]
详情:http://stackoverflow.com/questions/6557425/modal-view-controller-wont-dismiss-itself
2.UISegmentedControl:
[segmentControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];原来segmentControl.selectedSegmentIndex = 0;这样的调用会导致直接调用一次segmentAction。但是在ios5中没有调用。要手动去执行一下,可以这样改,在设置完selectedSegmentIndex以后,加上
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0)
{
[self segmentAction:segmentControl];
}
3.非pad界面的数字键盘,自定义增加一个ok按钮,在ios4上可以正确执行的,ios5上也不行了
比如说这个:http://www.neoos.ch/news/46-development/54-uikeyboardtypenumberpad-and-the-missing-return-key
经改进如下可以执行在ios5上正常显示
UIWindow*
tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
UIView* keyboard;
for(int i=0; i<[tempWindow.subviews count]; i++) {
keyboard = [tempWindow.subviews objectAtIndex:i];
// keyboard view found; add the custom button to it
if(([[keyboard description] hasPrefix:@”<UIPeripheralHostView”] == YES)||[[keyboard description] hasPrefix:@”<UIKeyboard”] == YES){
CGRect frame = CGRectMake(0.0f, 162.0f, 106.0f, 53.0f);
if ((orientation == UIInterfaceOrientationLandscapeLeft) || (orientation == UIInterfaceOrientationLandscapeRight)){
frame = CGRectMake(0.0f, 116.0f, 162.0f, 53.0f);
}
[doneBt setFrame:frame];
[keyboard addSubview:doneBt];
break;
}
}
4.ios5的键盘尺寸
ios5的键盘尺寸不再固定为以前的216,而是有216和252两种。比如说英文键盘的尺寸是216,而中文拼音键盘的尺寸是252,切换输入法之类的操作都可能会引起键盘尺寸的变化,所以随时要注意键盘上面多出的那一块会不会把用户界面给挡掉,更具体的情形,可以看这里的回复
http://www.cocoachina.com/bbs/read.php?tid=77630&page=2#457640
5.UINavigationBar的背景自定义图片
要实现navigationBar的背景自定义图片,是直接定义一个UINavigationBar的category,并重写drawRect方法,在ios5下面,navigationBar的drawRect方法似乎都不被调用了。
解决方法是:在app delegate里面的application didFinishLaunchingWithOptions方法中,加入
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"xxx.png"] forBarMetrics:UIBarMetricsDefault];
6.@property (nonatomic,setter=setMapViewHidden:,getter=isMapViewHidden) BOOL mapViewHidden;
setter=setMapViewHidden: 冒号必须要加上
7.UIPopoverController 里有NavigationController时 BarButtonItem位置偏移。
8.ios5中的ARC(自动释放内存机制)。如果启用了此功能,我们使用release编译的时候会报错,解决办法:
方案1:在创建项目的时候确保选项Automatic Reference Counting 不被选中即可,如果在创建的项目此选项已经选中,则请看方案2;
方案2:关闭ARC功能,在项目属性中将CLANG_ENABLE_OBJC_ARC设置为NO即可。
1.[self.parentViewController dismissModalViewControllerAnimated:YES]不起作用
需要修改为: [self dismissModalViewControllerAnimated:YES]
详情:http://stackoverflow.com/questions/6557425/modal-view-controller-wont-dismiss-itself
2.UISegmentedControl:
[segmentControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];原来segmentControl.selectedSegmentIndex = 0;这样的调用会导致直接调用一次segmentAction。但是在ios5中没有调用。要手动去执行一下,可以这样改,在设置完selectedSegmentIndex以后,加上
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0)
{
[self segmentAction:segmentControl];
}
3.非pad界面的数字键盘,自定义增加一个ok按钮,在ios4上可以正确执行的,ios5上也不行了
比如说这个:http://www.neoos.ch/news/46-development/54-uikeyboardtypenumberpad-and-the-missing-return-key
经改进如下可以执行在ios5上正常显示
UIWindow*
tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
UIView* keyboard;
for(int i=0; i<[tempWindow.subviews count]; i++) {
keyboard = [tempWindow.subviews objectAtIndex:i];
// keyboard view found; add the custom button to it
if(([[keyboard description] hasPrefix:@”<UIPeripheralHostView”] == YES)||[[keyboard description] hasPrefix:@”<UIKeyboard”] == YES){
CGRect frame = CGRectMake(0.0f, 162.0f, 106.0f, 53.0f);
if ((orientation == UIInterfaceOrientationLandscapeLeft) || (orientation == UIInterfaceOrientationLandscapeRight)){
frame = CGRectMake(0.0f, 116.0f, 162.0f, 53.0f);
}
[doneBt setFrame:frame];
[keyboard addSubview:doneBt];
break;
}
}
4.ios5的键盘尺寸
ios5的键盘尺寸不再固定为以前的216,而是有216和252两种。比如说英文键盘的尺寸是216,而中文拼音键盘的尺寸是252,切换输入法之类的操作都可能会引起键盘尺寸的变化,所以随时要注意键盘上面多出的那一块会不会把用户界面给挡掉,更具体的情形,可以看这里的回复
http://www.cocoachina.com/bbs/read.php?tid=77630&page=2#457640
5.UINavigationBar的背景自定义图片
要实现navigationBar的背景自定义图片,是直接定义一个UINavigationBar的category,并重写drawRect方法,在ios5下面,navigationBar的drawRect方法似乎都不被调用了。
解决方法是:在app delegate里面的application didFinishLaunchingWithOptions方法中,加入
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"xxx.png"] forBarMetrics:UIBarMetricsDefault];
6.@property (nonatomic,setter=setMapViewHidden:,getter=isMapViewHidden) BOOL mapViewHidden;
setter=setMapViewHidden: 冒号必须要加上
7.UIPopoverController 里有NavigationController时 BarButtonItem位置偏移。
8.ios5中的ARC(自动释放内存机制)。如果启用了此功能,我们使用release编译的时候会报错,解决办法:
方案1:在创建项目的时候确保选项Automatic Reference Counting 不被选中即可,如果在创建的项目此选项已经选中,则请看方案2;
方案2:关闭ARC功能,在项目属性中将CLANG_ENABLE_OBJC_ARC设置为NO即可。
相关文章推荐
- wordpress 更新域名之后,数据库需要做的修改
- 微信小程序--部分内容记录(持续更新...)
- 编写OpenCV程序时,需要注意的事项(持续更新)
- 【其他部分 第一章 矩阵】The C Programming Language 程序研究 【持续更新】
- Intellij IDEA2016.2.2工具使用遇到的问题以及部分快捷键(持续更新...)
- 升级安装Windows7后需要处理的兼容性程序(不断更新中)
- 升级cocoapods 0.36.0之后,解决更新的部分依赖库,不是最新版本的问题
- 升级cocoapods 0.36.0之后,解决更新的部分依赖库,不是最新版本号的问题
- 遇到一个IE升级到IE8之后脚本无法跑的问题。那么对于这样的问题,我们需要如何去处理?
- 【Error】跑CNN程序时遇到的error(持续更新)
- 做机械臂导航时遇到的问题2:solidworks用sw_urdf插件生成urdf文件包后,需要修改的部分
- 自写webrtc程序中遇到的问题---------------------持续更新----------
- [置顶] 【其他部分 第一章 矩阵】The C Programming Language 程序研究 【持续更新】
- 程序升级一般需要修改的内容
- VS2010无法调试问题解决 最近,因为公司开发的需要,对开发环境进行全面的升级,在这其中也遇到了不少问题,在之后将陆续整理出来,以便以后查看。 之前开发环境:VS2008,ArcGIS9.3,Ar
- 用vue-cli构建了项目之后在webstorm开发,用npm run dev跑本地服务,经常修改之后在浏览器刷新没反应,偶尔才会有刷新,需要重新跑一遍npm run dev才会更新,这是怎么回事呢?
- 用vue-cli构建了项目之后在webstorm开发,用npm run dev跑本地服务,经常修改之后在浏览器刷新没反应,偶尔才会有刷新,需要重新跑一遍npm run dev才会更新,这是怎么回事呢?
- ecshop的弊病和需要修改的地方,持续更新
- NHibernate遇到的问题集 持续更新。