From c104f47ea9cdf628834677945b700f09c21fb031 Mon Sep 17 00:00:00 2001 From: Justin Mazzocchi <2831158+jzzocc@users.noreply.github.com> Date: Tue, 19 Jan 2021 11:00:26 -0800 Subject: [PATCH] Fix activity view controllers on iPad --- View Controllers/ImageViewController.swift | 10 ++++++++++ View Controllers/TableViewController.swift | 6 ++++++ Views/Status/StatusView.swift | 2 ++ 3 files changed, 18 insertions(+) diff --git a/View Controllers/ImageViewController.swift b/View Controllers/ImageViewController.swift index 0324669..fae40fc 100644 --- a/View Controllers/ImageViewController.swift +++ b/View Controllers/ImageViewController.swift @@ -152,6 +152,11 @@ extension ImageViewController { if let image = imageView.image { let activityViewController = UIActivityViewController(activityItems: [image], applicationActivities: []) + if UIDevice.current.userInterfaceIdiom == .pad { + activityViewController.popoverPresentationController? + .barButtonItem = parent?.navigationItem.rightBarButtonItem + } + present(activityViewController, animated: true) } else if let asset = playerView.player?.currentItem?.asset as? AVURLAsset { asset.exportWithoutAudioTrack { result in @@ -162,6 +167,11 @@ extension ImageViewController { activityItems: [url], applicationActivities: []) + if UIDevice.current.userInterfaceIdiom == .pad { + activityViewController.popoverPresentationController? + .barButtonItem = self.parent?.navigationItem.rightBarButtonItem + } + activityViewController.completionWithItemsHandler = { _, _, _, _ in try? FileManager.default.removeItem(at: url.deletingLastPathComponent()) } diff --git a/View Controllers/TableViewController.swift b/View Controllers/TableViewController.swift index 6c52ff1..59e6306 100644 --- a/View Controllers/TableViewController.swift +++ b/View Controllers/TableViewController.swift @@ -444,6 +444,12 @@ private extension TableViewController { func share(url: URL) { let activityViewController = UIActivityViewController(activityItems: [url], applicationActivities: nil) + if UIDevice.current.userInterfaceIdiom == .pad { + guard let sourceView = tableView.viewWithTag(url.hashValue) else { return } + + activityViewController.popoverPresentationController?.sourceView = sourceView + } + present(activityViewController, animated: true, completion: nil) } } diff --git a/Views/Status/StatusView.swift b/Views/Status/StatusView.swift index c8fa3cb..d6959a0 100644 --- a/Views/Status/StatusView.swift +++ b/Views/Status/StatusView.swift @@ -430,6 +430,8 @@ private extension StatusView { favoriteButton.tintColor = favoriteColor favoriteButton.setTitleColor(favoriteColor, for: .normal) + + shareButton.tag = viewModel.sharingURL?.hashValue ?? 0 } // swiftlint:enable function_body_length