• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > iOS10相机权限设置了之后用户点击不允许crash

iOS10相机权限设置了之后用户点击不允许crash

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了ios10相机,ios10锁屏相机,ios10相机声音,ios10相机设置,ios10锁屏取消相机等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: iOS10相机权限设置了之后用户点击不允许crash
描述:

这两个Key设置好之后应该是相册和摄像头都可以调用的 但是现在的情况是相册的弹窗出来之后用户点击不允许就没事 访问相机用户点击不允许就会闪退……第二次进入APP就是正常提醒在隐私里开启授权了。
而且第一次出现弹出提示是否允许访问相机点击允许之后很长一段时间的黑屏甚至有的时候并不能打开相机 第二次有了授权之后这个黑屏就消失了
是我少了什么设置吗 相机这个不论点允许还是不允许都有问题

这两种情况遇到过吗?


解决方案1:

遇到了同样的问题。
再次重现的时候连到真机调试的时候打了全局断点,结果发现崩溃在设置自定义的alertWindow的frame这句。
po了一下发现alertWindow没有出现空指针。
那么原因很明显了。在操作UI的时候出现了crash,原因是操作UI没有在主线程。
回到代码里看发现调用相机状态的判断

let authStatus = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
        switch authStatus {
        case .NotDetermined:
            AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted) in
                if (granted) {
                    //第一次用户接受
                    if let tmp = handle {
                        tmp()
                    }
                }else{
                    //用户拒绝 *** 问题在这里,如果第一次用户拒绝了,回调并不在主线程。(注意,此时的case分支在用户并未决定里)
                    if let tmp = limitHandle {
                        dispatch_async(dispatch_get_main_queue(), {
                            tmp()
                        })
                    }
                }
            })
        case .Restricted: // 无法访问
            dLog("没有设备")
        case .Denied: // 用户拒绝
            if let tmp = limitHandle {
                dispatch_async(dispatch_get_main_queue(), {
                    tmp()
                })
            }
        case .Authorized: // 开启授权
            if let tmp = handle {
                tmp()
            }
        }

把用户第一次决定是否要同意使用相册的地方回调放到主线程,即可解决这个问题。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • iOS10相机权限设置了之后用户点击不允许crash
  • ios求助~求助~相机拍照的照片怎么保存到自己创建的相册里?

相关文章

  • 2017-06-05 m3u8关于IOS播放M3U8列表文件的疑问
  • 2017-06-05 upyuniOS提交审核,upyun图片加载不出来
  • 2017-06-05 自己app如何把坐标地址传给高德导航并打开高德导航app
  • 2017-06-05 QQ的最新SDK在iphone4S的模拟器下会爆这个错,但真机没问题,为什么?
  • 2017-06-05 yytext处理实现朋友圈回复效果
  • 2017-06-05 并行Nav的跳转,从Nav1中控制器跳转到Nav2的控制器并且点击后退回到Nav2(表达可能不准确欢迎指正)
  • 2017-06-05 怎么实现UICollectionView放大,并且左右可以拖动
  • 2017-06-05 iOS10模拟器上边运行崩溃。
  • 2017-06-05 为什么应用没有设置provisioningprofile的地方了
  • 2017-06-05 json解析float类型多出几位小数怎么处理?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 代码持续更新tableview与用户滑动tableview冲突?
    • qq信息提示音ios提示信息的轮子
    • 请问如何禁用当前控制器的侧边右滑pop手势?当前VC是push过来的
    • ios开发教程ios开发者账号的问题
    • Weex界面的生成码其实就是一段很小的JS,可以像发布网页一样轻松部署在服务端,然后在APP中请求执行,怎么理解?
    • iOS如何判断一个点在一个使用CAShapeLayer绘制出的圆弧内
    • 如何看待富了就移民这个问题这个语句有问题吗?
    • UITableView显示富文Html列表,有什么实现方案
    • 使用高德地图定位时,发现WIFI的时候可以显示正确位置,而在使用3G网络的时候定位出现了偏差
    • xcodearchiveXcode编译出现警告的原因都有哪些

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有