#swiftui
Вопрос:
Я работаю над представлением входа в систему, и у меня есть два разделителя (), один из которых подчеркивает текстовое поле имени пользователя, а другой-текстовое поле пароля. Используя физическое устройство для моделирования, когда я пытаюсь ввести текст в поле имени пользователя, разделитель под его текстовым полем исчезает, а затем появляется снова, когда я отключаю клавиатуру, однако этого не происходит с разделителем паролей.
Кроме того, такое поведение не возникает, если я удаляю изображение, расположенное поверх текстового поля. Есть какие-либо предложения о том, почему это происходит и как я могу это исправить?
Очень признателен!
VStack{
Image(uiImage: #imageLiteral(resourceName: "awText"))
.resizable()
.frame(width: 180, height: 100)
.padding(.bottom, 50)
TextField("Username", text: $username)
.padding(.leading)
Divider()
.padding(.bottom)
.onChange(of: self.username, perform: { value in
if value.count > 10 {
self.username = String(value.prefix(10)) //Max 10 Characters for Username.
}
})
.disableAutocorrection(true)
SecureField("Password", text: $password)
.padding(.leading)
Divider()
.onChange(of: self.username, perform: { value in
if value.count > 10 {
self.username = String(value.prefix(10)) //Max 10 Characters for Password.
}
})
.disableAutocorrection(true)
}
Ответ №1:
Попробуйте эти коды с прямоугольником!
struct ContentView: View {
@State private var username: String = String()
@State private var password: String = String()
var body: some View {
VStack{
Image(systemName: "star")
.resizable()
.frame(width: 180, height: 100)
.padding(.bottom, 50)
TextField("Username", text: $username)
.padding(.leading)
Rectangle().fill(Color.gray.opacity(0.25)).frame(height: 1, alignment: .center).padding(.bottom)
SecureField("Password", text: $password)
.padding(.leading)
Rectangle().fill(Color.gray.opacity(0.25)).frame(height: 1, alignment: .center)
}
.disableAutocorrection(true)
.onChange(of: self.username, perform: { value in
if value.count > 10 {
self.username = String(value.prefix(10))
}
})
.onChange(of: self.username, perform: { value in
if value.count > 10 {
self.username = String(value.prefix(10))
}
})
}
}
Комментарии:
1. Спасибо. Это определенно обходной путь, но мне все еще любопытно, почему он не работает с разделителем. Это проблема с iOS?
2. У разделителя с этим проблема! логично видеть вашу проблему, я не рекомендую использовать Разделитель, используйте мой код вместо Разделителя