Implemented LabelledUIKitTextField that displays a label on the left and a text field on the right
This commit is contained in:
parent
8aa38008d4
commit
fa9af8155a
|
@ -29,8 +29,8 @@
|
||||||
|
|
||||||
"Select your bank ..." = "Select your bank ...";
|
"Select your bank ..." = "Select your bank ...";
|
||||||
"Bank code" = "Bank code";
|
"Bank code" = "Bank code";
|
||||||
"Customer ID" = "Online banking login name";
|
"Online banking login name" = "Login name";
|
||||||
"Password" = "Online banking password";
|
"Online banking login password" = "Password";
|
||||||
|
|
||||||
"Could not add account" = "Could not add account";
|
"Could not add account" = "Could not add account";
|
||||||
"Error message from your bank %@" = "Error message from your bank:\n\n%@";
|
"Error message from your bank %@" = "Error message from your bank:\n\n%@";
|
||||||
|
|
|
@ -29,8 +29,8 @@
|
||||||
|
|
||||||
"Select your bank ..." = "Bank auswählen ...";
|
"Select your bank ..." = "Bank auswählen ...";
|
||||||
"Bank code" = "Bankleitzahl";
|
"Bank code" = "Bankleitzahl";
|
||||||
"Customer ID" = "Online-Banking Login Name";
|
"Online banking login name" = "Login Name";
|
||||||
"Password" = "Online-Banking passwort";
|
"Online banking login password" = "Passwort";
|
||||||
|
|
||||||
"Could not add account" = "Konto konnte nicht hinzugefügt werden.";
|
"Could not add account" = "Konto konnte nicht hinzugefügt werden.";
|
||||||
"Error message from your bank %@" = "Fehlermeldung Ihrer Bank:\n\n%@";
|
"Error message from your bank %@" = "Fehlermeldung Ihrer Bank:\n\n%@";
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
|
||||||
|
struct LabelledUIKitTextField: View {
|
||||||
|
|
||||||
|
let label: LocalizedStringKey
|
||||||
|
|
||||||
|
@Binding var text: String
|
||||||
|
|
||||||
|
var placeholder: String = ""
|
||||||
|
|
||||||
|
var keyboardType: UIKeyboardType = .default
|
||||||
|
var isPasswordField: Bool = false
|
||||||
|
|
||||||
|
var focusOnStart = false
|
||||||
|
var focusNextTextFieldOnReturnKeyPress = false
|
||||||
|
|
||||||
|
var isUserInputEnabled: Bool = true
|
||||||
|
|
||||||
|
var actionOnReturnKeyPress: (() -> Bool)? = nil
|
||||||
|
|
||||||
|
var textChanged: ((String) -> Void)? = nil
|
||||||
|
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
HStack {
|
||||||
|
Text(label)
|
||||||
|
|
||||||
|
Spacer()
|
||||||
|
|
||||||
|
UIKitTextField(placeholder, text: $text, keyboardType: keyboardType, isPasswordField: isPasswordField,
|
||||||
|
focusOnStart: focusOnStart, focusNextTextFieldOnReturnKeyPress: focusNextTextFieldOnReturnKeyPress,
|
||||||
|
textAlignment: .right, isUserInputEnabled: isUserInputEnabled,
|
||||||
|
actionOnReturnKeyPress: actionOnReturnKeyPress, textChanged: textChanged)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct LabelledUIKitTextField_Previews: PreviewProvider {
|
||||||
|
|
||||||
|
static var previews: some View {
|
||||||
|
LabelledUIKitTextField(label: "Label", text: .constant("Text"))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extension LabelledUIKitTextField {
|
||||||
|
|
||||||
|
init(label: LocalizedStringKey, value: String) {
|
||||||
|
self.label = label
|
||||||
|
|
||||||
|
_text = .constant("")
|
||||||
|
|
||||||
|
self.placeholder = value
|
||||||
|
|
||||||
|
self.isUserInputEnabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -16,12 +16,18 @@ struct UIKitTextField: UIViewRepresentable {
|
||||||
private var focusOnStart = false
|
private var focusOnStart = false
|
||||||
private var focusNextTextFieldOnReturnKeyPress = false
|
private var focusNextTextFieldOnReturnKeyPress = false
|
||||||
|
|
||||||
|
private var textAlignment: NSTextAlignment = .natural
|
||||||
|
private var isUserInputEnabled: Bool = true
|
||||||
|
|
||||||
private var actionOnReturnKeyPress: (() -> Bool)? = nil
|
private var actionOnReturnKeyPress: (() -> Bool)? = nil
|
||||||
|
|
||||||
private var textChanged: ((String) -> Void)? = nil
|
private var textChanged: ((String) -> Void)? = nil
|
||||||
|
|
||||||
|
|
||||||
init(_ titleKey: String, text: Binding<String>, keyboardType: UIKeyboardType = .default, isPasswordField: Bool = false,
|
init(_ titleKey: String, text: Binding<String>, keyboardType: UIKeyboardType = .default, isPasswordField: Bool = false,
|
||||||
focusOnStart: Bool = false, focusNextTextFieldOnReturnKeyPress: Bool = false, actionOnReturnKeyPress: (() -> Bool)? = nil, textChanged: ((String) -> Void)? = nil) {
|
focusOnStart: Bool = false, focusNextTextFieldOnReturnKeyPress: Bool = false,
|
||||||
|
textAlignment: NSTextAlignment = .natural, isUserInputEnabled: Bool = true,
|
||||||
|
actionOnReturnKeyPress: (() -> Bool)? = nil, textChanged: ((String) -> Void)? = nil) {
|
||||||
self.placeholder = titleKey
|
self.placeholder = titleKey
|
||||||
_text = text
|
_text = text
|
||||||
|
|
||||||
|
@ -31,6 +37,9 @@ struct UIKitTextField: UIViewRepresentable {
|
||||||
self.focusOnStart = focusOnStart
|
self.focusOnStart = focusOnStart
|
||||||
self.focusNextTextFieldOnReturnKeyPress = focusNextTextFieldOnReturnKeyPress
|
self.focusNextTextFieldOnReturnKeyPress = focusNextTextFieldOnReturnKeyPress
|
||||||
|
|
||||||
|
self.textAlignment = textAlignment
|
||||||
|
self.isUserInputEnabled = isUserInputEnabled
|
||||||
|
|
||||||
self.actionOnReturnKeyPress = actionOnReturnKeyPress
|
self.actionOnReturnKeyPress = actionOnReturnKeyPress
|
||||||
self.textChanged = textChanged
|
self.textChanged = textChanged
|
||||||
}
|
}
|
||||||
|
@ -54,6 +63,8 @@ struct UIKitTextField: UIViewRepresentable {
|
||||||
textField.focus()
|
textField.focus()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
textField.textAlignment = textAlignment
|
||||||
|
|
||||||
return textField
|
return textField
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +74,8 @@ struct UIKitTextField: UIViewRepresentable {
|
||||||
|
|
||||||
|
|
||||||
func makeCoordinator() -> UIKitTextField.Coordinator {
|
func makeCoordinator() -> UIKitTextField.Coordinator {
|
||||||
return Coordinator(text: $text, focusNextTextFieldOnReturnKeyPress: focusNextTextFieldOnReturnKeyPress, actionOnReturnKeyPress: actionOnReturnKeyPress, textChanged: textChanged)
|
return Coordinator(text: $text, focusNextTextFieldOnReturnKeyPress: focusNextTextFieldOnReturnKeyPress, isUserInputEnabled: isUserInputEnabled,
|
||||||
|
actionOnReturnKeyPress: actionOnReturnKeyPress, textChanged: textChanged)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -73,20 +85,29 @@ struct UIKitTextField: UIViewRepresentable {
|
||||||
|
|
||||||
private var focusNextTextFieldOnReturnKeyPress: Bool
|
private var focusNextTextFieldOnReturnKeyPress: Bool
|
||||||
|
|
||||||
|
private var isUserInputEnabled: Bool
|
||||||
|
|
||||||
private var actionOnReturnKeyPress: (() -> Bool)?
|
private var actionOnReturnKeyPress: (() -> Bool)?
|
||||||
|
|
||||||
private var textChanged: ((String) -> Void)?
|
private var textChanged: ((String) -> Void)?
|
||||||
|
|
||||||
|
|
||||||
init(text: Binding<String>, focusNextTextFieldOnReturnKeyPress: Bool, actionOnReturnKeyPress: (() -> Bool)? = nil, textChanged: ((String) -> Void)? = nil) {
|
init(text: Binding<String>, focusNextTextFieldOnReturnKeyPress: Bool, isUserInputEnabled: Bool,
|
||||||
|
actionOnReturnKeyPress: (() -> Bool)? = nil, textChanged: ((String) -> Void)? = nil) {
|
||||||
_text = text
|
_text = text
|
||||||
|
|
||||||
self.focusNextTextFieldOnReturnKeyPress = focusNextTextFieldOnReturnKeyPress
|
self.focusNextTextFieldOnReturnKeyPress = focusNextTextFieldOnReturnKeyPress
|
||||||
|
self.isUserInputEnabled = isUserInputEnabled
|
||||||
|
|
||||||
self.actionOnReturnKeyPress = actionOnReturnKeyPress
|
self.actionOnReturnKeyPress = actionOnReturnKeyPress
|
||||||
|
|
||||||
self.textChanged = textChanged
|
self.textChanged = textChanged
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
|
||||||
|
return isUserInputEnabled
|
||||||
|
}
|
||||||
|
|
||||||
func textFieldDidChangeSelection(_ textField: UITextField) {
|
func textFieldDidChangeSelection(_ textField: UITextField) {
|
||||||
let newText = textField.text ?? ""
|
let newText = textField.text ?? ""
|
||||||
|
|
|
@ -37,9 +37,9 @@ struct AddAccountDialog: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
Section {
|
Section {
|
||||||
UIKitTextField("Customer ID", text: $customerId, focusNextTextFieldOnReturnKeyPress: true, actionOnReturnKeyPress: handleReturnKeyPress)
|
LabelledUIKitTextField(label: "Online banking login name", text: $customerId, focusNextTextFieldOnReturnKeyPress: true, actionOnReturnKeyPress: handleReturnKeyPress)
|
||||||
|
|
||||||
UIKitTextField("Password", text: $password, isPasswordField: true, actionOnReturnKeyPress: handleReturnKeyPress)
|
LabelledUIKitTextField(label: "Online banking login password", text: $password, isPasswordField: true, actionOnReturnKeyPress: handleReturnKeyPress)
|
||||||
}
|
}
|
||||||
|
|
||||||
Section {
|
Section {
|
||||||
|
|
Loading…
Reference in New Issue