如何管理 UIActivityViewController 完成?

How to manage UIActivityViewController completion?

要分享图片,我将其滑出屏幕。

现在的情况是:

如果我取消 activity:

我需要的:

我该怎么做?

这是我的代码:

        let activityViewController = UIActivityViewController(activityItems: [imageToShare], applicationActivities: nil)
    self.present(activityViewController, animated: true, completion: {
        print("presented")
        //self.grids.center = self.offScreenPosition
        print("position share is \(self.grids.center)")
    })

    switch deviceOrientation {
    case "portrait":
        activityViewController.completionWithItemsHandler = {(UIActivityType: UIActivityType?, completed: Bool, returnedItems: [Any]?, error: Error?) in
            if !completed {
                print("cancelled")
                self.moveViewVertically(.backIn, range: self.verticalRange)
            }
            if completed {
                print("completed")
                self.moveViewVertically(.backIn, range: self.verticalRange)
            }
        }
    case "landscape":
        activityViewController.completionWithItemsHandler = {(UIActivityType: UIActivityType?, completed: Bool, returnedItems: [Any]?, error: Error?) in
            if !completed {
                print("cancelled")
                self.moveViewHorizontally(.backIn, range: self.horizontalRange)
            }
            if completed {
                self.moveViewHorizontally(.backIn, range: self.horizontalRange)
            }
        }
    default:
        break
    }

打印在那里可以看到发生了什么。 这是我的第一个应用程序。 谢谢你的帮助。

您要在 activityViewController 关闭之前将视图移回原处吗?你可以试试这个:自定义一个UIActivity的子类,然后

- (void)performActivity {
    // move your view back in
    [self activityDidFinish:YES];
}

问题已解决。 在 moveView 方法中,我写了 center.y -= 1 来移动视图。即在所需范围内的迭代。

现在我这样做了:

UIView.animate(withDuration: 0.5) {
            self.grids.transform = CGAffineTransform(translationX: 0, y: -self.view.frame.height)}

它按预期工作。