আমার কাছে ইউআইটিেক্সটভিউয়ের একটি খুব সহজ উপক্লাস রয়েছে যা "প্লেসহোল্ডার" কার্যকারিতা যুক্ত করে যা আপনি পাঠ্য ক্ষেত্রের অবজেক্টে নেটিভ খুঁজে পেতে পারেন। সাবক্লাসের জন্য আমার কোডটি এখানে:
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 এমএসের বেশি সময় লেগেছে। আপনার অঙ্কন কোড ধীর পারফরম্যান্সে ভুগতে পারে।
এই ত্রুটিগুলি কী কারণে ঘটছে তা আমি খুঁজে বের করতে পারছি না। দ্বিতীয় ত্রুটিটি কোনও অর্থবোধ করে না, কারণ আমি এমনকি ড্রআরেক্ট ()ও ওভাররাইড করছি না। কোন ধারনা?