开发者社区 问答 正文

IOS13:选择保存照片后未调用UIActivityViewController.completio

在IOS 13中选择“保存照片”后没有调用UIActivityViewController.completionwithitemshandler。

我的代码非常简单:

activityVC.completionWithItemsHandler = {(activityType: UIActivity.ActivityType?, completed: Bool, returnedItems: [Any]?, error: Error?) in
        let result: [String: Any] = [
            "completed": NSNumber(value: completed),
            "app": activityType?.rawValue ?? ""
        ];
    }

它只在我第一次保存照片时被调用,但是每次在弹出窗口中单击“保存照片”之后,我都需要知道结果,但是处理程序没有被调用。如何解决这个问题?

展开
收起
游客5akardh5cojhg 2019-12-12 13:51:43 744 分享
分享
版权
举报
阿里云 AI 助理回答

遇到您描述的问题,可能是由于iOS系统对权限管理或UIActivityViewController的行为有所改变。在iOS 13及以后的版本中,苹果对隐私和权限管理进行了更严格的控制,特别是涉及到文件访问和照片保存等操作。

这里有几个可能的解决方案和检查点,希望能帮助到您:

  1. 确保您的应用有相应的权限:首先,请确认您的应用已经获得了保存照片到相册所需的权限。这包括在Info.plist中添加NSPhotoLibraryAddUsageDescription键,并在需要时通过代码请求用户授权。

  2. 使用PHPhotoLibrary保存图片:考虑到直接使用UIActivityViewController的不确定性,您可以考虑改用Photos框架中的PHPhotoLibrary来手动保存图片,并通过其提供的完成回调来获取操作结果。示例代码如下:

import Photos

func saveImageToPhotos(image: UIImage, completionHandler: @escaping (Bool, Error?) -> Void) {
    PHPhotoLibrary.requestAuthorization { status in
        guard status == .authorized else {
            completionHandler(false, NSError(domain: "", code: 1, userInfo: [NSLocalizedDescriptionKey: "Permission not granted"]))
            return
        }
        
        let request = PHAssetChangeRequest.creationRequestForAsset(from: image)
        PHPhotoLibrary.shared().performChanges({
            request
        }, completionHandler: { success, error in
            completionHandler(success, error)
        })
    }
}
  1. 检查是否是模态呈现问题:在某些情况下,如果UIActivityViewController是以模态形式呈现的,且没有正确处理模态视图控制器的生命周期,可能会导致回调不被调用。确保您正确地呈现和dismiss该视图控制器。

  2. 测试其他Activity Types:尝试使用不同的UIActivity.ActivityType,比如分享到其他应用,看是否能正常触发completionWithItemsHandler。这有助于确定问题是否特定于“保存照片”这一操作。

  3. 查看iOS日志:同时,检查Xcode的调试输出或设备的日志,看看是否有任何相关的错误信息或警告,这可能会提供问题的线索。

如果以上方法都不能解决问题,建议查阅Apple的官方文档或开发者论坛,看是否有其他开发者遇到了类似问题并找到了解决方案。此外,考虑到技术更新迭代,也请检查您的代码与当前使用的Xcode和iOS SDK版本兼容性。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: