Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Dúvida do desafio

Na aula 1 do curso "iOS com SwiftUI: construindo autenticação de usuários em uma aplicação" fomos desafiados a fazer a seguinte componentização:

Componente TextField personalizado: Crie um componente que possa ser utilizado tanto para o TextField quanto para o SecureField, que já tenha o estilo de fundo cinza e os cantos arredondados. Ele também deve permitir o uso de diferentes teclados e configurações de autocorreção.

Tenho 2 dúvidas:

  • Essa minha abordagem foi correta? Apesar de estar funcionando fico em dúvida se há melhores formas de fazer isso.
import SwiftUI

struct insertFieldView: View {
    
    var placeholder: String
    var secure: Bool
    var keyboardType: UIKeyboardType = .default
    var autocorrectionDisabled: Bool = false
    
    @Binding var text: String
    
    var body: some View {
        if secure == true {
            SecureField(placeholder, text: $text)
                .padding(14)
                .background(Color.gray.opacity(0.25))
                .cornerRadius(14.0)
                .keyboardType(keyboardType)
                .autocorrectionDisabled(autocorrectionDisabled)
        } else {
            TextField(placeholder, text: $text)
                .padding(14)
                .background(Color.gray.opacity(0.25))
                .cornerRadius(14.0)
                .keyboardType(keyboardType)
                .autocorrectionDisabled(autocorrectionDisabled)
        }
        
    }
}

Daí depois eu chamo esse componente na SignInView da seguinte forma:

@State private var email: String = ""

*Restante do código*

insertFieldView(placeholder: "Insira seu email", secure: false, keyboardType: .emailAddress, autocorrectionDisabled: true, text: $email)
  • Acima do teclado mesmo se não for uma senha fica aparecendo Passwords, como eu posso remover isso?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Olá! Vamos às suas dúvidas:

Sua abordagem para criar um componente TextField personalizado em SwiftUI parece correta. Você criou uma estrutura insertFieldView que aceita vários parâmetros, incluindo um placeholder, um booleano secure para determinar se o campo é seguro, um tipo de teclado keyboardType, um booleano autocorrectionDisabled para habilitar ou desabilitar a autocorreção, e um Binding para o texto. Isso é uma boa prática, pois permite reutilizar o mesmo componente em diferentes partes do seu aplicativo com diferentes configurações. Para remover a sugestão de “Passwords” que aparece acima do teclado, você pode tentar definir o textContentType para nil no seu SecureField. Isso deve informar ao sistema para não fornecer sugestões de preenchimento automático para esse campo. Aqui está como você pode fazer isso:

SecureField(placeholder, text: $text)
    .textContentType(nil)
    .padding(14)
    .background(Color.gray.opacity(0.25))
    .cornerRadius(14.0)
    .keyboardType(keyboardType)
    .autocorrectionDisabled(autocorrectionDisabled)

Espero que isso ajude! Se você tiver mais perguntas, fique à vontade para perguntar.

  1. https://stackoverflow.com/questions/75055198/custom-textfield-swiftui
  2. https://stackoverflow.com/questions/56471973/how-do-i-create-a-multiline-textfield-in-swiftui
  3. https://stackoverflow.com/questions/71730852/on-a-securefield-in-swiftui-how-do-you-remove-the-password-fill-box-on-osx
  4. https://www.sourcetrail.com/es/r%C3%A1pido/swiftui/estilo-de-campo-de-texto-swiftui-propio/
  5. https://www.sourcetrail.com/pt/r%C3%A1pido/swiftui/estilo-de-campo-de-texto-pr%C3%B3prio-do-swiftui/
  6. https://stefanblos.com/posts/textfield-in-swiftui/
  7. https://stackoverflow.com/questions/56491386/how-to-hide-keyboard-when-using-swiftui
  8. https://itigic.com/pt/how-to-remove-keyboard-suggestions-on-android-phones/
  9. https://swiftspeedy.com/password-field-show-hide-eye-icon-in-swiftui/

Muito obrigado por sanar minhas dúvidas, coloquei ".textContentType(nil)" no TextField onde estava sugerindo senhas e deu certo!