質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1040閲覧

[SwiftUI]特定機種でNavigationView回転後の挙動がおかしい

MrYamamoto

総合スコア0

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/06/02 10:48

編集2020/06/23 04:13

前提・実現したいこと

SwiftUIで設定画面などの簡単なフォーム画面の作成
特定の機種で画面回転後、Form内NavigationLinkがおかしな挙動になります。
この問題さえ解決できればSwiftUIでアプリをリリースしたいと考えております。
何か対処方法はありませんでしょうか?
回転動作可能なiPhoneアプリの設定画面などはこの問題が発生しうると認識しています。
動作を完全に改善するのは難しいとしても、こんなふうに凌いでいるなど、対処療法的なアイデアでも頂戴できれば大変ありがたいです。

発生している問題・エラーメッセージ

NavigationView内にForm、そのFormの中にNavigationLinkを設置して、次のViewに遷移しています。
この状態で、iPhone8 Plus等のPlus系もしくは11 Pro Max等のMax系の端末にて画面を回転させた後に、このNavigationLinkをタップすると、
90度回転させた回数分だけ同じViewが何度もpushされるおかしな挙動になってしまいます。

実行イメージ

Plus系、Max系以外のiPhoneではこのような挙動にはなりません。
下記数行のコードをMax系Plus系シミュレータで実行、回転動作してリンクをタップするだけで簡単に再現できます。
また、この素朴なサンプルではなくても、NavigationView内にForm、Form内からNavigationLinkの関係ですと今のところ100%この現象が発生します。
この内容がFormではなく通常のListではこの問題は発生しません。
Listに.listStyle(GroupedListStyle())を設定すると(見た目的にFormに近い状態になります)この問題は発生します。

該当のソースコード

Swift

1import SwiftUI 2struct ContentView: View { 3 var body: some View { 4 NavigationView { 5 Form { 6 NavigationLink(destination: Text("destination")) { 7 Text("link") 8 } 9 } 10 } 11 } 12}

試したこと

実機、シミュレータ共にiOS13.5までテストしましたが、画面回転後は一貫してNavigationLinkがおかしな挙動になります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MrYamamoto

2020/06/02 23:45

広い意味ではSwiftUI、NavigationViewのお話ですので、関係しているかと思います。 ご紹介いただいた記事は、NavigationViewがUISplitViewControllerとして動作した時のMaster-Detailのデフォルトの挙動が、(機種とオリエンテーションの組み合わせによっては)直感的ではないというお話とその対処方法かと存じます。 初学者である当方ではFormが90度ローテーションするたびに挙動がおかしくなるという点との狭い意味での関係は見出せませんでした。 ご紹介いただいた記事とどのように関係性を調査すればいいかヒントがいただければ幸いです。
hoshi-takanori

2020/06/03 00:13

NavigationView で検索したら出てきたので貼ってみましたが、無関係だったようでごめんなさい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問