issues
search
Funcy-ICT
/
Funcy_Portfolio_iOS_for_SwiftUI
Funcyポートフォリオの開発環境SwiftUI版です
3
stars
0
forks
source link
TextBoxの複数行入力とキーボードに関する機能の修正
#65
Closed
mersakakey
closed
11 months ago
mersakakey
commented
1 year ago
機能説明
- TextFieldが複数行入力に対応していなかったため、ios16以降の機能である`axis: .vertical`で対応できるようにしました。 - 1行の入力欄と複数行での入力欄で処理を分けました。
懸念事項
以下に示す使い方がキモい(主にキーボードフォーカスの部分)
使い方
TextBox(text: String, width: CGFloat, height: CGFloat, lines: ClosedRange) - text: テキストボックスのプレイスホルダー - width: テキストボックスの横幅 - height: linesが1...1の時にのみ指定可能。テキストボックスの縦幅 - lines: x...yの形で指定。テキストボックスの最低行数と最高行数を指定 使用例: キーボードのfocusを管理するために、呼び出す側のViewで@FocusState var focusと.focusedオプションを指定する必要がある。 内部で定義していない理由は、内部で定義すると1画面で複数のtextBoxを呼び出すと完了ボタンがいっぱい出てくるから。 ```swift import SwiftUI @main struct Portfolio: App { @State private var email: String = "" @State private var password: String = "" @State private var email2: String = "" @State private var email3: String = "" @State private var email4: String = "" @FocusState var focus: Bool var body: some Scene { WindowGroup { VStack(alignment: .leading) { TextBox(inputText: $email, titleText: "メールアドレス") TextBox(inputText: $password, titleText: "パスワード", descriptionText: "8文字以上記号必須", fieldHide: true, isRequired: true) TextBox(inputText: $email2, titleText: "メールアドレス", width: 300) TextBox(inputText: $email3, titleText: "メールアドレス", lines: 6...6, isRequired: true) TextBox(inputText: $email4, titleText: "メールアドレス", width: 200, lines: 5...5) } .focused(self.$focus) .toolbar { ToolbarItem(placement: .keyboard) { HStack { Spacer() Button("完了") { self.focus = false } } } } } } } ```
スクリーンショット
セルフレビュー
- iPhone15 pro実機で動作を確認しました。 - xcodeのプレビュー上やシュミレータ上では日本語入力が不安定だったり日本語入力不可だったりしましたが、実機ではそのような現象は起きませんでした。
(あれば)レビュー,チェックしてほしい部分
キーボード周りのもっといい書き方とか
mersakakey
commented
1 year ago
secretな入力に対応 & 見た目をちょっと変えました
mersakakey
commented
1 year ago
赤ポチを出せるようにしました
機能説明
- TextFieldが複数行入力に対応していなかったため、ios16以降の機能である`axis: .vertical`で対応できるようにしました。 - 1行の入力欄と複数行での入力欄で処理を分けました。
懸念事項
以下に示す使い方がキモい(主にキーボードフォーカスの部分)
使い方
TextBox(text: String, width: CGFloat, height: CGFloat, lines: ClosedRange) - text: テキストボックスのプレイスホルダー - width: テキストボックスの横幅 - height: linesが1...1の時にのみ指定可能。テキストボックスの縦幅 - lines: x...yの形で指定。テキストボックスの最低行数と最高行数を指定 使用例: キーボードのfocusを管理するために、呼び出す側のViewで@FocusState var focusと.focusedオプションを指定する必要がある。 内部で定義していない理由は、内部で定義すると1画面で複数のtextBoxを呼び出すと完了ボタンがいっぱい出てくるから。 ```swift import SwiftUI @main struct Portfolio: App { @State private var email: String = "" @State private var password: String = "" @State private var email2: String = "" @State private var email3: String = "" @State private var email4: String = "" @FocusState var focus: Bool var body: some Scene { WindowGroup { VStack(alignment: .leading) { TextBox(inputText: $email, titleText: "メールアドレス") TextBox(inputText: $password, titleText: "パスワード", descriptionText: "8文字以上記号必須", fieldHide: true, isRequired: true) TextBox(inputText: $email2, titleText: "メールアドレス", width: 300) TextBox(inputText: $email3, titleText: "メールアドレス", lines: 6...6, isRequired: true) TextBox(inputText: $email4, titleText: "メールアドレス", width: 200, lines: 5...5) } .focused(self.$focus) .toolbar { ToolbarItem(placement: .keyboard) { HStack { Spacer() Button("完了") { self.focus = false } } } } } } } ```
スクリーンショット
セルフレビュー
- iPhone15 pro実機で動作を確認しました。 - xcodeのプレビュー上やシュミレータ上では日本語入力が不安定だったり日本語入力不可だったりしましたが、実機ではそのような現象は起きませんでした。
(あれば)レビュー,チェックしてほしい部分
キーボード周りのもっといい書き方とか