[解決済み] @IBDesignable のエラーです。IB Designablesです。自動レイアウトステータスの更新に失敗しました。Interface Builder Cocoa Touch ツールがクラッシュしました。
質問
UITextViewの非常にシンプルなサブクラスで、テキストフィールドオブジェクトにネイティブで備わっている"Placeholder"機能を追加しています。以下は、そのサブクラスのコードです。
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
}
}
}
のクラスを変更した後
UITextView
オブジェクトを、Identity Inspector の
PlaceholderTextView
を設定することができます。
Placeholder
プロパティは、属性インスペクタでうまく表示されます。このコードはアプリを実行するときはうまくいくのですが、インターフェースビルダーではプレースホルダーテキストが表示されません。また、以下のようなノンブロッキングエラーが発生します(デザイン時にレンダリングされないのはこのためだと思われます)。
のエラーが発生しました。IB デザイナブル。自動レイアウトステータスの更新に失敗しました。Interface Builder Cocoa Touch ツールがクラッシュしました。
のエラーが発生しました。IB デザイナブル。PlaceholderTextView のインスタンスのレンダリングに失敗しました。ビューのレンダリングに200ms以上かかりました。描画コードが低パフォーマンスに悩まされる可能性があります。
何が原因でこのようなエラーが発生するのか、把握できていません。2つ目のエラーは、drawRect()をオーバーライドしていないため、意味がありません。何かアイデアはありますか?
解決方法は?
Interface Builder Cocoa Touch Toolがクラッシュしたときに生成されるクラッシュレポートがあります。これらは、以下の場所にあります。
~/Library/Logs/DiagnosticReports
という名前の
IBDesignablesAgentCocoaTouch_*.crash
. 私の場合は、私のコードの問題を特定する有用なスタック・トレースが含まれていました。
関連
-
[解決済み] Xcode 7のエラーです。"Missing iOS Distribution signing identity for ..." (iOS配布用署名IDがありません)
-
[解決済み] 文字列の長さを取得する
-
[解決済み] Objective-Cで文字列が空かどうかをテストするにはどうすればよいですか?
-
[解決済み] UITextFieldのテキスト変更イベント
-
[解決済み] UIDevice uniqueIdentifierは非推奨 - どうしたらいいの?
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] iOS - UITextFieldの外側をタッチするとキーボードが外れる。
-
[解決済み] Swiftの配列を文字列に変換するには?
-
[解決済み] UITextBorderStyleNoneを使用してUITextFieldのパディングを設定する
-
[解決済み] Xcode 8 - IB Designables - 自動レイアウトステータスのレンダリングと更新に失敗し、エージェントがクラッシュしました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
libc++abi.dylib が NSException 型の捕捉できない例外で終了する理由 エラー
-
XCode のコンパイル例外を解決する clang: error: linker command failed with exit code 1
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] UITextViewのマージン/パディングをなくす方法
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] NSOperationとGrand Central Dispatchの比較
-
[解決済み] ぼかしの入ったオーバーレイビューの作成