मुझे पता है कि इस एक के लिए पहले से ही बहुत सारे उत्तर हैं, लेकिन मुझे वास्तव में उनमें से कोई भी पर्याप्त नहीं मिला (कम से कम स्विफ्ट में)। मैं एक ऐसा समाधान चाहता था जो UITextField की तरह ही सटीक बॉर्डर प्रदान करता हो (न कि एक अनुमानित एक जैसा जो अभी दिखता है, ठीक वैसा ही दिखता है, लेकिन एक ऐसा है जो बिल्कुल ऐसा दिखता है और हमेशा वैसा ही दिखेगा)। मुझे बैकग्राउंड के लिए UITextView को वापस करने के लिए एक UITextField का उपयोग करने की आवश्यकता थी, लेकिन हर बार अलग से इसे बनाना नहीं चाहते थे।
नीचे दिया गया समाधान एक UITextView है जो सीमा के लिए अपने स्वयं के UITextField की आपूर्ति करता है। यह मेरे पूर्ण समाधान का एक ट्रिम किया गया संस्करण है (जो इसी तरह से UITextView में "प्लेसहोल्डर" समर्थन जोड़ता है) और यहां पोस्ट किया गया था: https://stackoverflow.com/a/36561236/1227119
// This class implements a UITextView that has a UITextField behind it, where the
// UITextField provides the border.
//
class TextView : UITextView, UITextViewDelegate
{
var textField = TextField();
required init?(coder: NSCoder)
{
fatalError("This class doesn't support NSCoding.")
}
override init(frame: CGRect, textContainer: NSTextContainer?)
{
super.init(frame: frame, textContainer: textContainer);
self.delegate = self;
// Create a background TextField with clear (invisible) text and disabled
self.textField.borderStyle = UITextBorderStyle.RoundedRect;
self.textField.textColor = UIColor.clearColor();
self.textField.userInteractionEnabled = false;
self.addSubview(textField);
self.sendSubviewToBack(textField);
}
convenience init()
{
self.init(frame: CGRectZero, textContainer: nil)
}
override func layoutSubviews()
{
super.layoutSubviews()
// Do not scroll the background textView
self.textField.frame = CGRectMake(0, self.contentOffset.y, self.frame.width, self.frame.height);
}
// UITextViewDelegate - Note: If you replace delegate, your delegate must call this
func scrollViewDidScroll(scrollView: UIScrollView)
{
// Do not scroll the background textView
self.textField.frame = CGRectMake(0, self.contentOffset.y, self.frame.width, self.frame.height);
}
}
UITextField
और बस बंद कर सकते हैंuserInteractionEnabled
?