fields ios swift uitextfield editing

fields - text field ios 11



Deshabilitando la entrada del usuario para UITextfield en swift (5)

En el guión gráfico tienes dos opciones:

  1. establece el ''habilitar'' del control en falso.
  1. configura la vista ''habilitar interacción usuario'' falso

La diferencia entre estas opciones es:

La aparición de UITextfild para mostrar en la pantalla.

  1. Primero se establece la habilitación del control. Puedes ver el color de fondo se cambia.
  2. El segundo es configurar la vista ''Habilitar interacción usuario''. El color de fondo NO se cambia.

Dentro del código:

  1. textfield.enable = false
  2. textfield.userInteractionEnabled = NO

    Actualizado para Swift 3

    1. textField.isEnabled = false
    2. textfield.isUserInteractionEnabled = false

Pregunta bastante trivial, lo sé. Pero no puedo encontrar nada en línea.

Necesito deshabilitar al usuario para que no pueda editar el texto dentro de un campo de texto. De modo que al hacer clic en el texto, no aparece un teclado.

¿Algunas ideas?

Una solución programática o si es posible a través de guiones gráficos sería genial.


Me gusta hacerlo como en los viejos tiempos. Solo utiliza una clase personalizada de UITextField como esta:

// // ReadOnlyTextField.swift // MediFormulas // // Created by Oscar Rodriguez on 6/21/17. // Copyright © 2017 Nica Code. All rights reserved. // import UIKit class ReadOnlyTextField: UITextField { /* // Only override draw() if you perform custom drawing. // An empty implementation adversely affects performance during animation. override func draw(_ rect: CGRect) { // Drawing code } */ override init(frame: CGRect) { super.init(frame: frame) // Avoid keyboard to show up self.inputView = UIView() } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) // Avoid keyboard to show up self.inputView = UIView() } override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { // Avoid cut and paste option show up if (action == #selector(self.cut(_:))) { return false } else if (action == #selector(self.paste(_:))) { return false } return super.canPerformAction(action, withSender: sender) } }


Otra solución, declare su controlador como UITextFieldDelegate, implemente esta devolución de llamada:

@IBOutlet weak var myTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() myTextField.delegate = self } func textFieldShouldBeginEditing(textField: UITextField) -> Bool { if textField == myTextField { return false; //do not show keyboard nor cursor } return true }


Prueba esto:

Swift 2.0 :

textField.userInteractionEnabled = false

Swift 3.0 :

textField.isUserInteractionEnabled = false

O en el guión gráfico desmarque "Interacción de usuario habilitada"


en su lugar, puede usar UILabel si no desea que el usuario pueda modificar nada en su UITextField

Una solución programática sería usar la propiedad enabled :

yourTextField.enabled = false

Una forma de hacerlo en un storyboard:

Desmarque la casilla de verificación Habilitado en las propiedades de su UITextField