Tocropviewcontroller: 移行(iOS 13)の問題の却下

作成日 2019年08月08日  ·  23コメント  ·  ソース: TimOliver/TOCropViewController

ナビゲーションコントローラーの上にクロップコントローラーを表示すると、問題が発生しました。

クロップコントローラーを閉じると、トランジションの最後にナビゲーションコントローラービューが削除され、表示されません...(iPhoneとiPadで発生し、iOS 13でのみ発生します)。

ナビゲーションがまだそこにあり、UIが「スタック」していることは言うまでもありません。

bug

最も参考になるコメント

 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)
    }

この方法はiOS13でうまく機能します。
理由はわかりません。

私はあなたがより良い方法を見つけることを期待しています。

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

全てのコメント23件

@uchiaTzikiうーん。 すみません、見せなければならないかもしれません! スクリーンショットを添付できますか?

添付のスクリーンショット...

  1. イメージピッカーでモーダルを提示します。
  2. 選んだ画像
  3. そのセルから作物コントローラーを提示する
  4. キャンセルした後、閉じるとイメージピッカーが消えます(最初に表示されているコントローラーが表示されます-コントローラーを白で色付けしました)

それが物事をより明確にすることを願っています。
1
2
3
4

うーん、それであなたはそれを提示されている別のビューコントローラーの中に提示しているのですか?

この却下コードが間違ったViewControllerを却下してしまうのではないかと思います。

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)を押す
  • View Controller (B)は、 View Controller (C)フォームシートとして表示します
  • ビューコントローラー(C)CropViewControllerを提示します
  • CropViewControllerで[キャンセル]または[完了]をタップすると、バグを見つけることができます。

すみません、休暇中です。

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)
    }

この方法はiOS13でうまく機能します。
理由はわかりません。

私はあなたがより良い方法を見つけることを期待しています。

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

こんにちは、iOS13.1のバグに遭遇しました

使用する場合
dismiss(animated: true, completion: nil)
iOS 13.1の場合

すべてのViewControllerが消えます。

crop

理由はわかりません。

cropViewController.modalTransitionStyle = .coverVerticalを回避策として設定する必要がありました。これは、カスタムトランジションを使用しなくなったためです...

ここでは@oblqと同じです。

CropViewControllerを提示する前に、これらのコードを試しましたか?

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

私の問題を修正しました、ありがとう

if #available(iOS 13.0、*){
CropViewController.modalPresentationStyle = .fullScreen
}

ありがとう。 これにより、iOS13での問題が修正されました

画像を切り抜いた後、切り抜きコントローラーを閉じ、トランジションの最後にナビゲーションコントローラービューが削除され、表示されません

私を助けてください

画像を切り抜いた後、切り抜きコントローラーを閉じ、トランジションの最後にナビゲーションコントローラービューが削除され、表示されません

私を助けてください

やあ! ただ、セット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

if #available(iOS 13.0、*){
CropViewController.modalPresentationStyle = .fullScreen
}

この問題はiOS13以降で解決されていますありがとうございます

if #available(iOS 13.0、*){
CropViewController.modalPresentationStyle = .fullScreen
// CropViewController.modalTransitionStyle = .crossDissolve
CropViewController.transitioningDelegate = nil
}
私のために働いています

うーん。 わかった。 プレゼンテーションスタイルを明示的に全画面に設定すると、大多数の人にとってそれが修正されたように見えたので、これを終了します。 :)

明示的に異なるモーダルプレゼンテーションスタイルを必要とする特定のユースケースがある場合は、新しい問題を開いて、何をしようとしているのかを非常に注意深く説明してください。 iOS 13のバグの場合、ここでできることはあまりないかもしれないことを覚えておいてください。

ありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価