🍄
SwiftUIのTextEditorに30文字しか入力できない?と思ったら…
🧐 なにが起こったのか
前回作成したレビュー評価画面を実機で動かしていたところ、あることに気が付きました。
↓ 前回の記事はこちら
😥 ひらがなもアルファベットも30文字しか入力できない?
どうやら文字が30文字しか入力できないようです。
実際に文字を入力してみたGIFはこちらです。
| ひらがなを入力した場合 | アルファベットを入力した場合 |
|---|---|
![]() |
![]() |
🧑💻 使用していたコードを再確認
以下が、実際に使用したレビュー評価画面のコードです。
TextEditor を使っておりますが、文字数制限をしている記述は見当たりません。
コード全体
import SwiftUI
struct RatingDialogView: View {
@Binding var isPresented: Bool
@State private var rating: Int = 0
@State private var inputText = ""
var body: some View {
VStack(spacing: 16) {
Text("ドライバーの評価をお願いします")
.font(.headline)
Image(systemName: "person.crop.circle.fill")
.resizable()
.frame(width: 80, height: 80)
.clipShape(Circle())
.foregroundColor(.gray)
Text("ダミー会社名株式会社")
.font(.body)
.foregroundColor(.secondary)
Divider()
Text("今回の満足度と評価をご入力ください。")
.font(.callout)
HStack(spacing: 8) {
ForEach(1...5, id: \.self) { index in
Image(systemName: rating >= index ? "star.fill" : "star")
.resizable()
.frame(width: 28, height: 28)
.foregroundColor(rating >= index ? .yellow : .gray)
.onTapGesture {
rating = index
}
}
}
TextEditor(text: $inputText)
.frame(height: 100)
.padding(4)
.overlay(
RoundedRectangle(cornerRadius: 8)
.stroke(Color.gray, lineWidth: 1)
)
.overlay(alignment: .topLeading) {
if inputText.isEmpty {
Text("運転が丁寧で親切なドライバーさんでした")
.foregroundColor(Color(uiColor: .placeholderText))
.padding(8)
}
}
Button(action: {
print("評価送信: \(rating) ★, コメント: \(inputText)")
isPresented = false // 閉じる
}) {
Text("評価する")
.frame(maxWidth: .infinity)
.padding()
.background(rating > 0 ? Color.blue : Color.gray)
.foregroundColor(.white)
.cornerRadius(8)
}
.disabled(rating == 0)
}
.padding()
.background(Color.white)
.cornerRadius(16)
.shadow(radius: 10)
.padding()
}
}
#Preview {
RatingDialogView(isPresented: .constant(true))
}
もし、30文字しか入力できないのであれば、例えば下記のようなコードが書かれていることが考えられました。
しかし、上記のコードを見てもcount > 30箇所はどこにも見当たりません。
では、なぜ30文字しか入力できなかったのでしょうか?
var other: String {
didSet {
if other.count > 30 {
other = String(other.prefix(30))
}
}
}
🍄 原因は「Simeji」キーボードだった!
実は私、普段はSimejiというサードパーティ製の日本語入力キーボードを使っています。
↓これが原因でした。
他のキーボードで試してみた結果
iPhone標準のキーボードやgrammalyというキーボードを使ってみたところ、30文字以上入力できることが確認できました。
| iphone標準キーボード | grammalyキーボード |
|---|---|
![]() |
![]() |
さらに深掘り:標準メモ帳で検証
SimejiでiPhoneのメモ帳に文字を入力してみた結果はこちらです。
確定ボタンを押せば、30文字以上の入力が可能でした。
つまり、未確定の状態だと入力上限に制限がかかってしまっていたようです。
| メモ帳 + Simeji(未確定) | 30文字入力後に「確定」 |
|---|---|
![]() |
![]() |
結論まとめ
- SwiftUIの TextEditor に文字数制限コードは書いていない
- それでも30文字しか入力できなかったのはSimejiキーボードの挙動によるもの
- 未確定のままだと文字入力が途中で止まることがある
- 「確定」ボタンを押せば問題なく入力できる
最後に:同じ症状で困っている方へ
もしTextEditorやTextFieldに制限があるように見えたら、
サードパーティ製キーボードの影響を疑ってみると良いかもしれません。
ここまで読んでいただきありがとうございました!
同じ悩みを持つ方の参考になれば嬉しいです🙇♀️






Discussion