原文地址:http://blog.csdn.net/dangyalingengjia/article/details/77964582
XCode9和iOS11 beta了不知多少版本了,正式版本还没有正式发布。我也终于忍不了了,还是都做了升级。设备版本分别为:
XCode:Version 9.0 beta 6 (9M214v)
iPhone:11.0(15A5370a)
下面的问题都是在iOS11之前的版本运行完好,但是升级后出现的问题:
1,定位相关
问题描述:无法定位,而且程序在安装后第一次访问定位权限时,无定位权限提示对话框弹出。
原因:iOS11 定位相关的权限做了更改,在iOS11上使用了新的定位权限key。
解决方案:
如果原来申请的权限是始终允许NSLocationAlwaysUsageDescription,那么需要在保留原来的key的基础上增加NSLocationWhenInUseUsageDescription和NSLocationAlwaysAndWhenInUsageDescription。具体参考另篇博客:
http://blog.csdn.net/dangyalingengjia/article/details/77965029
2,系统相册相关
问题描述:iOS11上读写相册的照片时发生崩溃。
原因:由于相册相关权限的key发生了变化。用户在没有权限的情况下,访问相册导致崩溃。
解决方案:
iOS11之前相册对应的key是NSPhotoLibraryUsageDescription,iOS11对应的Key是NSPhotoLibraryAddUsageDescription。同定位的Key一样,由于key没有兼容性,所以需要保留原key以兼容iOS10及之前版本。
3,第三方库WKWebViewJavascriptBridge
问题描述:在WKWebView的回调函数中崩溃:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
原因:WKWebViewJavascriptBridge内部逻辑问题
解决方案:WKWebViewJavascriptBridge最新的6.0.2上仍然没有解决这个问题,可以参考github issue#272
只能手动修改源文件,将if改为 else if
4,关于UIScrollView初始位置变化的问题
由于iOS11废弃了UIViewController的automaticallyAdjustsScrollViewInsets属性,位置需要手动调整。
iOS11中为UIScrollView新增了contentInsetAdjustmentBehavior属性,结合UIAppearance协议,可以统一在appDelegate的didFinishLaunchingWithOptions的最开始增加:
if#available(iOS 11.0, *) {UIScrollView.appearance().contentInsetAdjustmentBehavior=.never}
1
2
3