美文网首页
升级到XCode9(BaseSDK:iOS11)的各种坑

升级到XCode9(BaseSDK:iOS11)的各种坑

作者: Code丶Ling | 来源:发表于2017-09-26 18:42 被阅读368次

原文地址: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

相关文章

网友评论

      本文标题:升级到XCode9(BaseSDK:iOS11)的各种坑

      本文链接:https://www.haomeiwen.com/subject/ffleextx.html