recuperar - soporte iphone
iPhone cómo obtener el texto de UITextField mientras tipea? (7)
- Primero agregue un
UITextField
yUILabel
al guión gráfico / plumín - Ahora asigne
IBOutlet
paraUILabel
(Aquí he usado myLabel ) - Asigne
UITextFieldDelegate
al propietario del archivo, también implemente el mismo delegado en el archivo .h Use estas líneas de código:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; [self updateTextLabelsWithText: newString]; return YES; } -(void)updateTextLabelsWithText:(NSString *)string { [myLabel setText:string]; }
Espero que esto ayude.
Estoy tratando de mostrar los cambios realizados en un UITextField
en un UITextField
por separado. ¿Hay alguna manera de capturar el texto completo de UITextField
después de cada carácter que el usuario UITextField
? Actualmente estoy usando este método, pero no captura el último carácter que el usuario ha ingresado.
Sé que UITextView
tiene el método "didChange", pero no pude encontrar ese método para un UITextField
.
//does not capture the last character
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
[self updateTextLabelsWithText: textField.text];
return YES;
}
¿Cómo puedo sacar texto de UITextField después de cada carácter ingresado?
¡Gracias!
Simplemente maneje el evento "Editing Changed"
[textField addTarget:self
action:@selector(editingChanged:)
forControlEvents:UIControlEventEditingChanged];
y el selector:
-(void) editingChanged:(id)sender {
// your code
}
Puede hacerlo de forma manual o con el guión gráfico con CTRL: arrastrando el evento Enviado "Edición modificada" a su .h, creando el método de edición modificado por usted.
Swift 3.0+: Esto funcionó muy bien para mí.
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
self.yourLabel.text = "/(textField.text ?? "")/(string)"
return true
}
Swift con addTarget Swift 2.0+
titleTextField.addTarget(self, action: #selector(textFieldTyping), forControlEvents: .EditingChanged)
Y implementar selector
func textFieldTyping(textField:UITextField)
{
//Typing
}
En Swift 2.0+
class CheckInViewController: UIViewController, UITextFieldDelegate {
override func viewDidLoad() {
super.viewDidLoad()
yourTextField.delegate = self
}
func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool {
var updatedTextString : NSString = textField.text as NSString
updatedTextString = updatedTextString.stringByReplacingCharactersInRange(range, withString: string)
self.methodYouWantToCallWithUpdatedString(updatedTextString)
return true
}
}
Espero que te ayude a los pioneros rápidos
En Swift 3.0:
Algunas de estas soluciones tenían un carácter detrás o versiones anteriores de Swift y Obj-C. Esto es lo que estoy usando para Swift 3.0
En la clase, declare un marcador de posición para almacenar el texto.
var tempName = ""
En ViewDidLoad utilicé:
nameField.addTarget(self, action: #selector(typingName), for: .editingChanged)
Luego hice una función llamada:
func typingName(textField:UITextField){
if let typedText = textField.text {
tempName = typedText
print(tempName)
}
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField == yourTextFieldOutletName
{
if yourTextFieldOutletName.isEmpty == false
{
youtlabelname.text = yourTextFieldOutletName.text!
}
}
return true
}
func textViewDidEndEditing(_ textView: UITextView) {
if textField == yourTextFieldOutletName
{
if yourTextFieldOutletName.isEmpty == false
{
youtlabelname.text = yourTextFieldOutletName.text!
}
}
}