如何管理 UIActivityViewController 完成?
How to manage UIActivityViewController completion?
要分享图片,我将其滑出屏幕。
现在的情况是:
- 我滑动图片
- 它显示了 UIActivityViewController
- 我选一个activity
- activity 模态显示
如果我取消 activity:
- 图像在屏幕上(视图已加载)
- 图像移回
我需要的:
- 我取消了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)}
它按预期工作。
要分享图片,我将其滑出屏幕。
现在的情况是:
- 我滑动图片
- 它显示了 UIActivityViewController
- 我选一个activity
- activity 模态显示
如果我取消 activity:
- 图像在屏幕上(视图已加载)
- 图像移回
我需要的:
- 我取消了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)}
它按预期工作。