Actualmente tengo el siguiente código:

class NewPostController: UIViewController {

@IBOutlet weak var MessageField: UITextView!

override func viewDidLoad() {
    super.viewDidLoad()
    MessageField.text = "What's on your mind?"
    MessageField.textColor = UIColor.lightGrayColor()
}

func textViewDidBeginEditing(MessageField: UITextView) {
    if MessageField.textColor == UIColor.lightGrayColor() {
        MessageField.text = ""
        MessageField.textColor = UIColor.blackColor()
    }
}

Sin embargo, cada vez que puedo editar MessageField, el código dentro de textViewDidBeginEditing no se ejecuta. Sospecho que esto es debido a un inválido manera de hacer referencia a MessageField dentro de la función, pero no sé qué hacer.

  • stackoverflow.com/questions/27652227/…
  • No sé swift, pero supongo que debe delegar su vista de texto para ejecutar textViewDidVeginEditing. Usted debe llamar a [MessageField setDelegate:auto] (equivalente en swift sintaxis) y debe agregar <UITextViewDelegate>
  • los detalles del código no cambia el hecho de que puedo escribir en println("Hi") dentro de textViewDidBeginEditing, pero aún no se ejecuta.
InformationsquelleAutor dbalagula23 | 2015-06-03

3 Comentarios

  1. 20

    Parece que no eres la configuración de su UITextView‘s delegate.

    class ViewController: UIViewController, UITextViewDelegate {
    
    @IBOutlet weak var myTextView: UITextView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        myTextView.delegate = self
    }
    
    func textViewDidBeginEditing(textView: UITextView) {
        myTextView.text = String()
    }

    UITextViewDelegate Protocolo de Referencia

    • func textViewDidBeginEditing(textView: UITextView) { textView.text = «» } esto también funciona.
  2. 1

    Y a hacer @DanielStorm la respuesta de trabajar en Swift 3:

    func textViewDidBeginEditing(_ textView: UITextView) {
        myTextView.text = ""
    }
    • La pregunta no es cómo convertir a Swift 3. Y también, su variable de instancia no está definido, por lo que es confuso.
    • es solo un complemento para la respuesta…
    • Bueno, al menos el formato decentemente, me refiero a sólo 3 líneas.
  3. 1

    Además de las respuestas ya dadas, probablemente me tome el enfoque de almacenamiento si se ha borrado inicialmente como una variable de instancia en su clase. En la mayoría de los casos de uso, el usuario espera que esté desactivada sólo cuando se empiece a editar el primer tiempo (para deshacerse de cualquier texto de marcador de posición):

    func textViewDidBeginEditing(_ textView: UITextView) {
        if !self.textViewClearedOnInitialEdit {
            self.textView.text = ""
            self.textViewClearedOnInitialEdit = true
        }
    }

Dejar respuesta

Please enter your comment!
Please enter your name here