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 } } } } } } } ```

スクリーンショット

スクリーンショット 2023-10-10 15 02 28

セルフレビュー

- iPhone15 pro実機で動作を確認しました。 - xcodeのプレビュー上やシュミレータ上では日本語入力が不安定だったり日本語入力不可だったりしましたが、実機ではそのような現象は起きませんでした。

(あれば)レビュー,チェックしてほしい部分

キーボード周りのもっといい書き方とか

mersakakey commented 1 year ago

secretな入力に対応 & 見た目をちょっと変えました

スクリーンショット 2023-11-27 16 17 28
mersakakey commented 1 year ago

赤ポチを出せるようにしました

スクリーンショット 2023-11-27 17 08 39