iOS _初次访问相册弹窗授权,拒绝与允许监听

问题

今天遇到一个问题,就是初次访问相册的时候弹窗授权,点击允许后 界面上自定义的相册浏览器数据没有刷新。
why?最后排查到push到该界面的时候加载完视图,并且appear的时候获取数据的数组为空,所以reload collectionView的时候界面时空的。

当弹出授权窗口的时候,界面已经加载完并且appear了。这时候想到的自然时监听点击授权按钮的时候 重新 获取数据 并且 reload 视图。

//判断相册授权状态
 PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];

 status == PHAuthorizationStatusDenied;//用户拒绝当前应用访问相册,我们需要提醒用户打开访问开关

 status == PHAuthorizationStatusRestricted;//家长控制,不允许访问

 status == PHAuthorizationStatusNotDetermined;//用户还没有做出选择

 status == PHAuthorizationStatusAuthorized;//用户允许当前应用访问相册

解决代码

if ([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized){//用户之前已经授权
            [self readSystemPhotos];
 }else if([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusDenied){//用户之前已经拒绝授权
            UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"提示" message:@"您之前拒绝了访问相册,请到手机隐私设置" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                [self dismissViewControllerAnimated:YES completion:nil];
            }];
            [alertC addAction:sureAction];
            [self presentViewController:alertC animated:YES completion:nil];
        }else{//弹窗授权时监听
            [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
                if (status == PHAuthorizationStatusAuthorized){//允许
                    [weakself readSystemPhotos];//获取数据 刷新视图
 }else{//拒绝
                    [self dismissViewControllerAnimated:YES completion:nil];
                }
            }];
        }

这时会出现一个问题,重新获取数据成功后,reload 的时候没有响应。
这时候要把 刷新视图放到主线埕执行

- (void)readSystemPhotos
{
    LHQWeakSelf(self);
    if (self.photoAssetCollection) {
        self.dataArray = [[LHQAblumTool shareAblumTool] getAssetsInAssetCollection:self.photoAssetCollection ascending:YES];
    }else{
        self.dataArray = [[LHQAblumTool shareAblumTool] getAllAssetInPhotoAblumWithAscending:YES];
    }
    dispatch_async(dispatch_get_main_queue(), ^{//主线埕执行
        [weakself.photosCollection reloadData];
    });
    
}

解决。
网上参考资料:http://www.jianshu.com/p/f9776e2e54b0 (这里面的排版我差点看晕,不过解决了我的问题,挺好 嘿嘿嘿!!!)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,267评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,832评论 4 61
  • “我喜欢你,喜欢到看你一眼就可以欢喜许久,喜欢到你对我说的话拿来一遍遍回味,喜欢到可以抛掉所有的架子和尊严,喜欢到...
    木槿雪薇阅读 2,999评论 0 0
  • 生活没有答案 我们没有如期相约 今天 我一个人 回到了老街 一个人吃了 六年前的东北水饺 还要土家酱饼 一个人走了...
    逗霸君阅读 1,850评论 8 8
  • 我不能有负能量 考研压力大 情绪起伏 比较敏感 不能有负能量 不能有负能量 不能有负能量 重要的事情说三遍
    毛大毛的阅读笔记阅读 1,094评论 0 0

友情链接更多精彩内容