Я настроил текстовое поле и поместил его в VStack, но он не работает, когда я щелкаю текстовое поле. Но это работает хорошо, если я помещу это вне VStack. Пожалуйста, проверьте код и дайте ответы на все вопросы, чтобы решить эту проблему. Заранее спасибо.
struct LoginView: View {
@State var email = ""
@State var password = ""
var body: some View {
NavigationView {
VStack {
// email
CustomTextField(placeholder: "Working", text: $email, icon: Image(systemName: "envelope.fill"))
VStack {
Text("SIGN IN")
.font(.title)
.padding()
.padding(.top, 16)
// email
CustomTextField(placeholder: "Not working", text: $email, icon: Image(systemName: "envelope.fill"))
// password
CustomTextField(placeholder: "Password", text: $password, icon: Image(systemName: "lock.fill"))
}
.background(Color.blue)
.shadow(color: Color.gray, radius: 5)
.padding(.init(top: 40, leading: 40, bottom: 0, trailing: 40))
}
.background(Color(AppColors.shared.themeColor))
.edgesIgnoringSafeArea(.all)
} // navigation
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
.navigationBarTitle("")
} // body
} // end view
Здесь настраиваемое текстовое поле =====
struct CustomTextField: View {
var placeholder: String
@Binding var text: String
var icon: Image
var height: CGFloat = 45
var body: some View {
HStack(spacing: 10) {
TextField(placeholder, text: $text)
.multilineTextAlignment(.leading)
.accentColor(Color.black)
.foregroundColor(Color.black)
.padding(.init(top: 0, leading: 20, bottom: 0, trailing: 0))
icon.padding(.init(top: 0, leading: 0, bottom: 0, trailing: 24))
}
.background(Color.red)
.frame(height: height)
.clipShape(RoundedRectangle(cornerRadius: height/2))
.overlay(RoundedRectangle(cornerRadius: height/2).stroke(Color.secondary, lineWidth: 1))
.padding(.init(top: 0, leading: 40, bottom: 0, trailing: 40))
}
}