@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.
Vous devez vous connecter pour publier un commentaire.
Il y a des rapports d'erreur généré lorsque Constructeur d'interfaces Cocoa Touch Outil se bloque. Les thèses sont situés dans
~/Library/Logs/DiagnosticReports
et nomméIBDesignablesAgentCocoaTouch_*.crash
. Dans mon cas, elles contenaient utile stack-trace qui a identifié le problème dans mon code.grep 'fatal error' <crash log>
initFrame(frame: CGRect)
doit être défini. Si vous fournissez votre propreinit
méthode(s).init(frame: CGRect)
explicitement parce que j'ai eu une coutumeini
méthode. Vous voudrez peut-être regarder à travers le rapport de crash pouruse of unimplemented initializer 'init(frame:)'
directement sousApplication Specific Information
dans le rapport. Merci les gars! Double victoire dans cette réponse!J'ai eu le même problème une couple de fois. Les deux fois, il a commencé quand j'étais au chargement d'un IBDesignable plume sur le storyboard, lorsque la plume n'était pas en mesure de tenir sur la vue (c'est à dire que j'avais un bouton off de la UIView, mais encore à la plume). Une fois que j'ai fixé que Xcode encore m'a donné des erreurs alors j'ai redémarré Xcode au hasard jusqu'à ce qu'il a arrêté de me donner l'erreur.
J'espère que cette aide.
Mise à JOUR: je vient de tuer tous les processus nommés "Interface Builder Cocoa Touch Outil", redémarré Xcode et l'erreur a disparu. Ne sais pas si cela fonctionnera ou pas.
PlaceholderTextView
d'utiliser une sous-vue de l'étiquette à la place de la réelle valeur de texte... Il peut avoir été une de ces choses.init
méthodes, le code affiché dans le cadre de la question ne montre plus laIB Designables
erreurs et l'espace réservé est bien rendu dans Interface Builder.Dans mon cas, je faisais le suivant dans la initWithFrame/initWithCoder méthodes pour créer la vue:
Il semble que j'ai été Pas censé utiliser le regroupement Principal, mais plutôt l'ensemble de la classe. Je l'ai donc remplacé le code pour la suite, et il a travaillé:
J'ai pensé que peut-être que cela pourrait aider quelqu'un.
let bundle = Bundle(for: ValidatingTextField.self)
en SwiftVous pouvez sélectionner votre affichage personnalisé dans Interface Builder, puis utiliser
Editor
,Debug Selected Views
. Il va lancer soi-disantIBDesignableAgentCocoaTouch
session de débogage lorsque tous les points d'arrêt (y compris l'exception des points d'arrêt) de travail et vous pourriez exactement identifier le lieu de votre vue se bloque.Pour Xcode 8 - Swift
L'ajout de l'option valeur à la valeur par défaut sur
@IBInspectable
causer de problème pour moi.Cela ne fonctionne pas:
Cela devrait fonctionner:
Je vivais la même Interface Builder problèmes de rendu designables.
À l'aide de la technique proposée dans ce réponse j'ai été en mesure de traquer la question de l'utilisation de l'image de littéraux.
Rendu crash
Pas de rendu crash
En fait, si vous avez quelques vieux les attributs définis par l'utilisateur (qui n'est pas valide pour la vue en cours), à tout point de vue dans votre storyboard, qui peut causer votre agent de blocage.
D'ailleurs, parfois, il arrive juste à cause d'un méchant bug de Xcode. Pour le vérifier, lorsque vous êtes au storyboard décochez l'Éditeur > Actualiser Automatiquement les points de Vue, puis passer à un autre fichier, nettoyer et redémarrer votre projet. Après que vous avez entré storyboard encore une fois, vous pouvez cliquer sur l'Éditeur > Actualiser les Vues et la vérification automatique d'un nouveau. Celle-ci a également résolu mon problème une fois.
Si les deux ne fonctionnent pas, alors vous avez probablement fait quelque chose de mal à propos de votre IBDesignable vue, afin de choisir votre écrasé de vues dans le storyboard et le débogage en cliquant sur l'Éditeur > Debug Vues
Ce n'est pas le cas pour cette question, mais je vais peut-être aider quelqu'un d'autre.
J'ai eu un problème similaire lorsque, dans ma @IBDesignable classe je n'ai pas mis en œuvre à la fois:
J'ai eu le même problème et je l'ai résolu en ajoutant le "use_frameworks!" pour mon projet de Podfile.
Espère que cela vous aide.
user_frameworks
? ouuse_frameworks!
?Dans mon cas, c'était en quelque sorte lié à une carthage cadre que j'ai été en utilisant. J'ai dû ajouter $(PROJECT_DIR)/Carthage/Build/iOS à l' Runpath Chemins de Recherche paramètre de construction
Dans mon cas, c'était un problème de OneSignal. Apparemment, ils ont un bug dans la version 2.2.0 et au-dessus. Passé à 2.1.6 et tout c'est très bien de nouveau!
Découvrez cette.
Quand j'ai débogué ce que j'ai découvert il y a certaines classes qui sont la modification de l'INTERFACE utilisateur. Généralement marquelabel qui est une sous-classe de UILabel ou toute autre catégorie de sous-classement UIView et dessin de l'interface utilisateur au moment de l'exécution et d'entrer en collision avec mise en page automatique du moteur. Essayez de donner à fixe la largeur ou la hauteur de ces vues personnalisées. Si cela ne résout pas votre problème, essayez les solutions Suivantes:-
Solution 1:- Supprimez #use_frameworks à l'intérieur de votre fichier pod.
Solution 2:- Essayez de supprimer des données dérivées. 1. Fermez la fenêtre de l'Éditeur de votre Xcode et de quitter le simulateur -> 2. Aller à Xcode Préférences -> les Emplacements -> 3. Cliquez sur la petite flèche grise montrant dérivé du chemin de données -> 4. Sélectionnez votre projet -> 5. Supprimer tous les dossiers à l'intérieur -> 6. Quittez Xcode et rouvrir
Ajouter à la fin de votre Podfile et exécuter
pod install
Ajouter ce script à la fin de mon
Podfile
et réaliséepod install
de nouveau.Un problème majeur, c'est quand vous créez @IBDesignable assurez-vous que le cocoapod fichier n'est pas inclus dans le UITests sinon il sera la cause de ce crash.
- Je trouver la raison en est votre xib n'est pas de la même taille que la conception de story-board. Assurez-vous que le xib a la même hauteur et la largeur.
J'étais manque juste cette ligne de code
platform :ios, '7.0'
et le problème a été résolu. Juste cette ligne dans votre fichier pod et mise à jour de votre pod problème sera résolu.
Pour moi, c'était un manque de certificat de signature, parce que je n'ai jamais couru de l'app, afin de Xcode n'a pas encore de créer un certificat. Une fois que j'ai couru à l'application, la
IBDesignable
rendu a bien fonctionné.C'est comme si vous avez obtenu le Code d'autres Développeur et vous obtenez cette erreur.
Il suffit d'exécuter
Cela a fonctionné pour moi.
Espérons que Cela aide.
Assurez-vous que vous n'êtes pas directement de l'initialisation
UIImage
ouUIFont
à l'aide d'actifs ou les polices ajoutées dans votre projet.Je crée toujours un
private func setUp()
dans mon@IBDesignable
personnaliséUI
classes.qui est appelé à partir
init(frame: CGRect)
,init?(coder aDecoder: NSCoder)
. Donc j'ai enfin mis à jour lesetup()
que les suivantes.Juste le laisser pour construire et exécuter sur simulateur si vous avez une erreur dans un autre endroit du projet de commentaire et d'exécuter concevable d'abord de mettre à jour personnalisable et décommentez les autres codes.
Il fonctionne pour moi.