import SwiftUI // 输入框类型枚举(更优雅的方式) enum TextFieldType { case username case password case number case email case text } struct CustomTextField: View { // MARK: - 属性 let placeholder: String let type: TextFieldType // 双向绑定的值(关键!) @Binding var value: String // MARK: - 主体视图 var body: some View { Group { // 使用 Group 统一修饰符 if type == .password { // 密码框 SecureField(placeholder, text: $value) } else { // 普通文本框 TextField(placeholder, text: $value) .textInputAutocapitalization(.never) // 关闭自动大写 .disableAutocorrection(true) // 关闭自动纠错 } } .padding() .background(Color(.systemGray6)) .cornerRadius(8) .keyboardType(keyboardType(for: type)) // 设置键盘类型 } // MARK: - 根据类型返回键盘类型 private func keyboardType(for type: TextFieldType) -> UIKeyboardType { switch type { case .number: return .numberPad case .email: return .emailAddress default: return .default } } }