@IBDesignable erreur: IB Designables: Échec de mise à disposition automatique état: Constructeur d'interfaces Cocoa Touch Outil s'est écrasé

J'ai une question très simple sous-classe de UITextView qui ajoute un "espace Réservé" des fonctionnalités que vous pouvez trouver natif de l'objet Champ de Texte. Voici mon code pour la sous-classe:

import UIKit
import Foundation

@IBDesignable class PlaceholderTextView: UITextView, UITextViewDelegate
{
    @IBInspectable var placeholder: String = "" {
        didSet {
            setPlaceholderText()
        }
    }
    private let placeholderColor: UIColor = UIColor.lightGrayColor()        
    private var textColorCache: UIColor!

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.delegate = self
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.delegate = self
    }

    func textViewDidBeginEditing(textView: UITextView) {
        if textView.text == placeholder {
            textView.text = ""
            textView.textColor = textColorCache
        }
    }

    func textViewDidEndEditing(textView: UITextView) {
        if textView.text == "" && placeholder != "" {
            setPlaceholderText()
        }
    }

    func setPlaceholderText() {
        if placeholder != "" {
            if textColorCache == nil { textColorCache = self.textColor }
            self.textColor = placeholderColor
            self.text = placeholder
        }
    }
}

Après un changement de classe pour la UITextView objet dans l'Identité de l'Inspecteur de PlaceholderTextView, je peux définir le Placeholder propriété très bien dans l'Attribut de l'Inspecteur. Le code fonctionne très bien lors de l'exécution de l'application, mais n'affiche pas le texte d'espace réservé dans interface builder. Je reçois aussi des erreurs de blocage (je suppose que c'est pourquoi il n'est pas rendu au moment de la conception):

erreur: IB Designables: Échec de mise à disposition automatique état: Constructeur d'interfaces Cocoa Touch Outil s'est écrasé

erreur: IB Designables: Échec pour le rendu de l'instance de PlaceholderTextView: le Rendu de la vue a pris plus de 200 ms. Votre code de dessin peuvent souffrir de ralentissement des performances.

Je ne suis pas en mesure de déterminer quel est l'origine de ces erreurs. La deuxième erreur n'a pas de sens, que je ne suis même pas primordial drawRect(). Des idées?

  • J'ai été faire cette erreur. L'objet a bien fonctionné dans un projet de test, mais pas dans mon projet principal (dans un tableau). Selon developer.apple.com/library/mac/recipes/..., j'ai choisi de Choisir l'Éditeur > Debug des Vues Sélectionnées. Puis je me suis "ne Pouvait pas les vues de débogage" "Assurer votre cadre de corriger les paramètres de construction de bâtiment pour iOS." Rien n'est venu dans Google pour cette erreur.
InformationsquelleAutor Albert Bori | 2014-12-09