Metin alanı nesnesine yerel bulabilirsiniz "yer tutucu" işlevini ekler UITextView çok basit bir alt sınıf var. İşte alt sınıf için benim kod:
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
Kimlik Denetçisindeki nesnenin sınıfını olarak değiştirdikten sonra , Özellik Denetçisinde özelliği gayet iyi PlaceholderTextView
ayarlayabilirim Placeholder
. Kod, uygulamayı çalıştırırken harika çalışıyor, ancak arayüz oluşturucuda yer tutucu metni görüntülemiyor. Ayrıca aşağıdaki engelleme olmayan hataları alıyorum (bu yüzden tasarım zamanında oluşturulmadığını varsayıyorum):
hata: IB Tasarım öğeleri: Otomatik düzen durumu güncellenemedi: Arayüz Oluşturucu Kakao Dokunmatik Aracı çöktü
error: IB Designables: PlaceholderTextView örneği işlenemedi: Görünümü oluşturma 200 ms'den uzun sürdü. Çizim kodunuz düşük performansa sahip olabilir.
Bu hatalara neyin sebep olduğunu bulamıyorum. İkinci hata herhangi bir anlam ifade etmiyor, çünkü drawRect () geçersiz kılmıyorum bile. Herhangi bir fikir?