Estou tentando verificar quando um campo de texto é alterado, equivalente também à função usada para textView - textViewDidChange
até agora, fiz isso:
func textFieldDidBeginEditing(textField: UITextField) {
if self.status.text == "" && self.username.text == "" {
self.topRightButton.enabled = false
} else {
self.topRightButton.enabled = true
}
}
Que tipo de trabalho, mas topRightButton
está ativado assim que o campo de texto é pressionado, desejo que seja ativado apenas quando o texto é realmente digitado?
ios
swift
uitextfield
boraseoksoon
fonte
fonte
viewDidLoad
. A ação é letra por letra da mesma forma. O aplicativo falha assim que um botão do teclado é pressionado. Edit: Descobri isso! Faltava o ponto e vírgula dentro da ação. Eu supus que só tinha que ser o mesmo que o nome da função.Você pode fazer essa conexão no construtor de interface.
No seu storyboard, clique no editor assistente na parte superior da tela (dois círculos no meio).
Ctrl + Clique no campo de texto no construtor de interfaces.
Arraste de EditingChanged para dentro da classe do controlador de exibição na exibição do assistente.
Nomeie sua função ("textDidChange", por exemplo) e clique em conectar.
fonte
Swift 5.0
e manipular método:
Swift 4.0
e manipular método:
Swift 3.0
e manipular método:
fonte
A maneira como eu lidei com isso até agora: em
UITextFieldDelegate
Versão Swift4
fonte
Swift 3
fonte
Swift 3.0.1+ (Algumas das outras respostas do Swift 3.0 não estão atualizadas)
fonte
O textField (_: shouldChangeCharactersIn: ReplacementString :) funcionou para mim no Xcode 8, Swift 3, se você quiser verificar cada pressionamento de tecla.
fonte
Swift 4
Conformidade com UITextFieldDelegate .
fonte
Você pode usar este método delegado de UITextFieldDelegate. É acionado a cada mudança de personagem.
No entanto, isso só acontece antes que uma alteração seja feita (na verdade, uma alteração é feita apenas se você retornar verdadeiro a partir daqui).
fonte
.isEmpty
método não equivale a verdadeiro até que APÓS este método tenha tido a chance de retornar verdadeiro; para informar ao aplicativo que o campo de texto deve mudar.Talvez use RxSwift?
necessidade
adicionar importações obviamente
Então você tem um
textfield : UITextField
Você tem outros 3 métodos ..
fonte
Swift 4
Se você quiser fazer uma alteração depois que o usuário digitar completamente (será chamado assim que o usuário desconectar o teclado ou pressionar enter).
fonte
fonte
Você deve seguir estas etapas:
Código de amostra:
fonte
É assim que você pode adicionar um Swift 3
textField text change listener
usando :Declare sua classe como
UITextFieldDelegate
Em seguida, basta adicionar tradicionalmente uma função textFieldShouldEndEditing:
fonte
Swift 4.2
escreva isso em viewDidLoad
escreva isso fora viewDidLoad
Você pode alterar o evento usando UIControl.Event.editingDidBegin ou o que você quiser detectar.
fonte
Caso você esteja interessado em uma solução SwiftUI, isso está funcionando para mim:
Eu tenho que dizer que não é minha ideia, eu li neste blog: SwiftUI binding: Um truque muito simples
fonte
Caso não seja possível vincular o addTarget ao seu UITextField, aconselho a vincular um deles, conforme sugerido acima, e insira o código para execução no final do método shouldChangeCharactersIn.
E na chamada shouldChangeCharactersIn func.
fonte
veloz 4
Em viewDidLoad ():
Adicione esta função:
fonte
crie uma nova classe personalizada MaterialTextfield.swift
fonte
UITextField
atualizou seu valor - por que criar uma classe muito complexa para resolver esse problema simples?