🌊

【SwiftUI】TextFieldのプレイスホルダーのアドレス検知して文字色変えるのを止めさせたい

に公開

Tips記事です。
メールアドレスの入力フォームを実装したとしましょう。

public var body: some View {
    VStack {
        Text("mail adress")
            .frame(maxWidth: .infinity, alignment: .leading)
            .font(font: .body)
        TextField("sample@gmail.com", text: $id)
            .padding()
            .overlay(
                RoundedRectangle(cornerRadius: 8)
                    .stroke(.black,lineWidth: 1)
            )
    }
}

このとき、TextFieldはプレイスホルダーがメールアドレスだと、ご親切に青文字にしてくれます。

ただプレイスホルダーなんで、薄いグレー文字になっていて欲しいので、止めて欲しいです。
ちなみにURLを検知しても青文字にしてくれます。

こちらの対策なんですが、オフにする指定がないようで、
検索すると色々出てくるんですが、僕が試した限りだと効きませんでした。

(参考)
https://stackoverflow.com/questions/57688242/swiftui-how-to-change-the-placeholder-color-of-the-textfield

どうしようかなーと色々試していたところ、

let placeholder = "sample@gmail.com"
TextField(placeholder, text: $id)

一度変数・定数を噛ませてから指定してあげると、アドレス検知が発動しないことに気づきました。

(了)

Discussion