मेरे पास UITextView का एक बहुत ही सरल उपवर्ग है जो "प्लेसहोल्डर" कार्यक्षमता को जोड़ता है जिसे आप टेक्स्ट फील्ड ऑब्जेक्ट के मूल में पा सकते हैं। यहाँ उपवर्ग के लिए मेरा कोड है:
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
पहचान इंस्पेक्टर में ऑब्जेक्ट के लिए क्लास बदलने के बाद PlaceholderTextView
, मैं नंबर सेट कर सकता हूंPlaceholder
गुण निरीक्षक में ठीक प्रॉपर्टी । एप्लिकेशन चलाते समय कोड बहुत काम करता है, लेकिन इंटरफ़ेस बिल्डर में प्लेसहोल्डर टेक्स्ट प्रदर्शित नहीं करता है। मुझे निम्नलिखित गैर-अवरोधक त्रुटियां भी मिलती हैं (मुझे लगता है यही कारण है कि यह डिज़ाइन समय पर प्रदान नहीं कर रहा है):
एरर: आईबी डिज़ाइबल्स: ऑटो लेआउट स्टेटस अपडेट करने में विफल: इंटरफ़ेस बिल्डर कोको टच टूल क्रैश हो गया
त्रुटि: आईबी डिज़ाइबल्स: प्लेसहोल्डरटेक्स्ट व्यू का उदाहरण प्रस्तुत करने में विफल: दृश्य को रेंडर करने में 200 एमएस से अधिक समय लगा। आपका ड्राइंग कोड धीमे प्रदर्शन से पीड़ित हो सकता है।
मैं यह पता लगाने में सक्षम नहीं हूं कि इन त्रुटियों का कारण क्या है। दूसरी त्रुटि का कोई मतलब नहीं है, क्योंकि मैं ड्रॉअर ओवरराइड () भी नहीं कर रहा हूं। कोई विचार?