ゴリポシェブログ

プログラミングやゲームについて気ままに綴ります

SwiftUIでは入力ダイアログはサポートされない件

2019年6月から開始されたSwiftUIですが、触ってみた感じ、かゆいところに手が届かないなぁと思いました。

 

発端は、入力ダイアログを使おうと思って、調べてみたらSwift UIではAlert表示はできるが、ユーザーから入力させるよなテキストフィールドは追加できないとのこと。

うーん。

 

SwiftUIで完結できると記載されている記事をありましたが、エラーになってしまいうまく動きませんでした。

面倒なので、エラー内容を追うことはしませんでした。m(__)m↓↓

alert — SwiftUIでTextFieldをAlertに追加する方法は?

 

解決策としては、

UIViewControllerRepresentable プロトコルを継承して、UKit の UIAlertController をラップしたViewを作成することで実装すれば良いとのこと。

下記サイトに記載されているコードを完コピで動きました。

【SwiftUI】TextField付きAlertを表示する – .NET ゆる〜りワーク

 

ただし、TextFieldAlertViewが要素の一部として認識されてしまい、レイアウトが崩れてしまうので、サイズを0にすることで解決しました。

 

                TextFieldAlertView(

                    text: $text,

                    isShowingAlert: $isShowingAlert,

                    placeholder: "",

                    isSecureTextEntry: false,

                    title: "名前登録",

                    message: "名前を入力してください",

                    leftButtonTitle: "キャンセル",

                    rightButtonTitle: "登録",

                    leftButtonAction: nil,

                    rightButtonAction: {

                        if item.contains(text) {

                            alertD()

                        } else {

                            registDataName(name: text)

                            item = getDataName()

                        }

                    }

                )

                .frame(width: 0, height: 0, alignment: .center)

 

早いとこアプデで追加されるといいなぁー