UIActivityViewController 的应用不会被选中

UIActivityViewController's apps won't get selected

因此,我使用最需要的参数创建了一个基本的 activity 视图控制器,并且它被调用,正如预期的那样,但是!

展示后您不能点击任何项目,除了底部的 'Cancel'。

在调试模式等下查看了几个站点,尚未找到任何结果。

实施:

func shareViaOther() {
        let body = Constants.ShareContent.title + "\n\n" + Constants.ShareContent.body
        let image = UIImage(named: Constants.ImageNames.appIcon)!
        let url = Constants.ShareContent.url!

        let items: [Any] = [body, image, url]

        let activityVC = UIActivityViewController(activityItems: items, applicationActivities: nil)
        activityVC.popoverPresentationController?.sourceView = view

        activityVC.excludedActivityTypes = [
            UIActivityType.postToWeibo,
            UIActivityType.postToTencentWeibo,
            UIActivityType.postToVimeo,
            UIActivityType.postToFlickr,
            UIActivityType.saveToCameraRoll,
            UIActivityType.assignToContact,
            UIActivityType.print,
            UIActivityType.copyToPasteboard
        ]

        present(activityVC, animated: true, completion: nil)
    }

免责声明:似乎清理项目、重置 phone 和重建没有任何区别..

任何帮助将不胜感激!!

我发现了这个错误,这里是总结和解决方案:

回顾:

我为通用 UIViewController 创建了一个扩展,我在其中覆盖了 touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 方法。 它从未被调用过,并且停止了我预期的行为。它不允许我 select 我添加到视图的 table 视图中的任何 table 视图单元格 - 因为缺少点击手势识别器。

更令人沮丧的部分是导致 activity 视图控制器失效select,但是滚动条工作正常 - 那是我开始意识到问题可能出在哪里。

解决方案

从 UIViewController 扩展中删除 touchesBegan(...),并创建了一个 BaseViewController,我从中继承了每个视图控制器,并使用该 touchesBegan(...) 函数扩展了 BaseViewController 的功能。现在,我可以通过点击显示的应用程序 select。干杯!