Saltar al contenido

¿Cómo debería funcionar ChangeCharactersInRange en Swift?

Estate atento ya que en este tutorial vas a encontrar la solución que buscas.

Solución:

Rápido 4, Rápido 5

Este método no utiliza NSString

// MARK: - UITextFieldDelegate

extension MyViewController: UITextFieldDelegate 
    func textField(_ textField: UITextField,
                   shouldChangeCharactersIn range: NSRange,
                   replacementString string: String) -> Bool 
        if let text = textField.text,
           let textRange = Range(range, in: text) 
           let updatedText = text.replacingCharacters(in: textRange,
                                                       with: string)
           myvalidator(text: updatedText)
        
        return true
    

Nota. Tenga cuidado cuando utilice un campo de texto protegido.

stringByReplacingCharactersInRange devolver un nuevo stringentonces, ¿qué tal:

func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool 
    if let text = textField.text as NSString? 
        let txtAfterUpdate = text.replacingCharacters(in: range, with: string)
        self.callMyMethod(txtAfterUpdate)
    
    return true

Rápido 3 y 4

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool 
    let textFieldText: NSString = (textField.text ?? "") as NSString
    let txtAfterUpdate = textFieldText.replacingCharacters(in: range, with: string)
    callMyMethod(txtAfterUpdate)

    return true


func textFieldShouldClear(_ textField: UITextField) -> Bool 
    callMyMethod("")
    return true

Rápido 2.2

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool 
    let textFieldText: NSString = textField.text ?? ""
    let txtAfterUpdate = textFieldText.stringByReplacingCharactersInRange(range, withString: string)
    callMyMethod(txtAfterUpdate)

    return true


func textFieldShouldClear(textField: UITextField) -> Bool 
    callMyMethod("")
    return true

Aunque el textField.text La propiedad es opcional, no se puede establecer en nil. Establecerlo en cero se cambia a vacío string dentro UITextField. En el código anterior, es por eso que textFieldText está configurado para vaciar string Si textField.text es nulo (a través del operador coalescente nil ??).

Implementar textFieldShouldClear(_:) maneja el caso en el que el botón borrar del campo de texto está visible y pulsado.

Sección de Reseñas y Valoraciones

Recuerda dar visibilidad a esta noticia si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *