Tocropviewcontroller: 忽略过渡 (iOS 13) 问题

创建于 2019-08-08  ·  23评论  ·  资料来源: TimOliver/TOCropViewController

在导航控制器上显示作物控制器时遇到问题。

当关闭裁剪控制器时,在转换结束时,导航控制器视图将被删除并且不显示......(发生在 iPhone 和 iPad 中,仅在 iOS 13 上发生)。

更不用说导航仍然存在并且用户界面“卡住”了。

最有用的评论

 func cropViewController(_ cropViewController: CropViewController, didFinishCancelled cancelled: Bool) {
        //This code fails on iOS13.
        //cropViewController.dismiss(animated: true)

        let viewController = cropViewController.children.first!
        viewController.modalTransitionStyle = .coverVertical
        viewController.presentingViewController?.dismiss(animated: true, completion: nil)
    }

此方法在 iOS 13 上运行良好。
我不知道为什么。

我希望你能找到更好的方法。

https://www.dropbox.com/s/wyzc8errinfap1f/TestCrop.zip?dl=0

所有23条评论

@uchiaTziki嗯。 你可能得给我看看,对不起! 你能附上截图吗?

附上截图...

  1. 使用图像选择器呈现模态。
  2. 选取的图像
  3. 来自该单元格的当前作物控制器
  4. 取消后,解散会导致图像选择器消失(并且您看到的是初始呈现控制器 - 我将控制器涂成白色)

希望能让事情更清楚。
1
2
3
4

嗯,所以你在另一个视图控制器中呈现它?

我想知道这个关闭代码是否最终关闭了错误的视图控制器:

https://github.com/TimOliver/TOCropViewController/blob/8770be8407540f5873fe714870771cea8a382ac7/Objective-C/TOCropViewController/TOCropViewController.m#L895

您能否尝试更改那里的代码,看看是否可以找到修复它的组合?

如果不能自己测试,我就无能为力了。 对不起!

我几乎尝试了任何东西,但我会再试一次..
后面的控制器没有被解雇..它的视图正在被删除(这很奇怪)。

在介绍cropViewController 之前,您是否尝试过这些代码?

if #available(iOS 13.0, *) {
 cropViewController.modalPresentationStyle = .fullScreen
}

今天早上试过了。 它确实解决了错误,但动画是默认的模态动画(从下到上)。
来自视图/帧的特殊动画不适用于此解决方案

@uchiaTziki你找到任何解决办法了吗?

这是否可以在示例应用程序中重现? 如果是这样,我可能会看看它。

iOS 13 中模态演示的工作方式与之前版本的 iOS 有所不同。 但是我还没有很好的机会来确定我们需要做什么来更新代码。

据我所知,当您遇到以下情况时,它无法正常工作:

  • 导航控制器(A)推送一个视图控制器(B)
  • 视图控制器(B)视图控制器(C)呈现表单
  • 视图控制器(C)呈现CropViewController
  • CropViewController上点击CancelDone ,您就会发现错误。

对不起,我在休假。

在介绍cropViewController 之前,您是否尝试过这些代码?

if #available(iOS 13.0, *) {
 cropViewController.modalPresentationStyle = .fullScreen
}

在最新的 Xcode 测试版中使用它 ( @TimOliver ) 就成功了。 所以过渡动画现在对我有用。

这对我也有用。

 func cropViewController(_ cropViewController: CropViewController, didFinishCancelled cancelled: Bool) {
        //This code fails on iOS13.
        //cropViewController.dismiss(animated: true)

        let viewController = cropViewController.children.first!
        viewController.modalTransitionStyle = .coverVertical
        viewController.presentingViewController?.dismiss(animated: true, completion: nil)
    }

此方法在 iOS 13 上运行良好。
我不知道为什么。

我希望你能找到更好的方法。

https://www.dropbox.com/s/wyzc8errinfap1f/TestCrop.zip?dl=0

嗨,我遇到了 iOS 13.1 上的错误

如果我使用
dismiss(animated: true, completion: nil)
在 iOS 13.1 上,

所有的 ViewController 都消失了。

crop

我不知道为什么。

我只需要将cropViewController.modalTransitionStyle = .coverVertical为一种解决方法,因为它不再使用自定义过渡...

与此处的@oblq相同。

在介绍cropViewController 之前,您是否尝试过这些代码?

if #available(iOS 13.0, *) {
 cropViewController.modalPresentationStyle = .fullScreen
}

解决了我的问题,谢谢

如果#available(iOS 13.0,*){
cropViewController.modalPresentationStyle = .fullScreen
}

谢谢。 这解决了我在 iOS 13 上的问题

裁剪图像后,关闭裁剪控制器,在转换结束时,导航控制器视图被移除且不显示

请帮帮我

裁剪图像后,关闭裁剪控制器,在转换结束时,导航控制器视图被移除且不显示

请帮帮我

你好! 只需设置cropViewController.dismiss(animated: **false**, completion: nil)而不是cropViewController.dismiss(animated: **true**, completion: nil)

我也一直在努力解决这个问题。 正如@ibdman1991所说,禁用动画有效,但看起来很糟糕。 我认为删除transitioningDelegate可能是一个更好的解决方案,但不确定这会有多大影响。

    let cropViewController = CropViewController(image: image)
    cropViewController.modalTransitionStyle = .crossDissolve
    cropViewController.transitioningDelegate = nil

如果#available(iOS 13.0,*){
cropViewController.modalPresentationStyle = .fullScreen
}

此问题已在 iOS 13 及更高版本中解决 谢谢

如果#available(iOS 13.0,*){
cropViewController.modalPresentationStyle = .fullScreen
//cropViewController.modalTransitionStyle = .crossDissolve
cropViewController.transitioningDelegate = nil
}
为我工作

呃。 好的。 由于将演示样式明确设置为全屏似乎可以为大多数人解决这个问题,因此我将其关闭。 :)

如果您有一个特定的用例需要明显不同的模态呈现样式,请打开一个新问题并非常仔细地解释您要尝试做什么。 请记住,如果它是 iOS 13 中的错误,那么我们在这里可以做的可能不多。

谢谢!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

TimOliver picture TimOliver  ·  4评论

kcankaynak picture kcankaynak  ·  4评论

yarodevuci picture yarodevuci  ·  8评论

tiviti picture tiviti  ·  8评论

Snow-Tech picture Snow-Tech  ·  4评论