Saya tahu sudah ada banyak jawaban untuk yang ini, tetapi saya tidak benar-benar menemukan satu pun dari mereka cukup (setidaknya di Swift). Saya menginginkan solusi yang memberikan batas persis sama dengan UITextField (bukan yang diperkirakan yang terlihat seperti itu terlihat sekarang, tetapi yang terlihat persis seperti itu dan akan selalu terlihat persis seperti itu). Saya perlu menggunakan UITextField untuk mendukung UITextView sebagai latar belakang, tetapi tidak ingin harus membuatnya secara terpisah setiap waktu.
Solusi di bawah ini adalah UITextView yang memasok UITextField sendiri untuk perbatasan. Ini adalah versi lengkap dari solusi lengkap saya (yang menambahkan dukungan "placeholder" ke UITextView dengan cara yang serupa) dan diposting di sini: 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
dan mematikan sajauserInteractionEnabled
?