2013-04-08 11 views
19

हाय मैं आईफोन ऐप्स के साथ काम कर रहा हूं, मुझे पता है कि यूआईटीएक्स्टफील्ड में प्लेसहोल्डर संपत्ति है। लेकिन UITextview में प्लेसहोल्डर संपत्ति नहीं है। मैं UITextview के लिए प्लेसहोल्डर को कस्टमाइज़ करने की प्रक्रिया को जानता हूं। लेकिन कृपया मुझे अंतर बताएं।क्यों UITextview में प्लेसहोल्डर संपत्ति नहीं है जैसे UITextField

और यूआईटीक्स्टफील्ड यूआईसीओन्ट्रोल से विरासत में आता है जो UIView से विरासत को प्राप्त करता है ... NSObject। और UITextview UIScrollView, UIView, UIresponder से प्राप्त होता है ... NSOBject। लेकिन जगह धारक संपत्ति से अंतर कहां है।

टेक्स्टफील्ड में प्लेसहोल्डर संपत्ति कैसे है, टेक्स्टव्यू में प्लेसहोल्डर क्यों नहीं है?

कृपया कोई विचार, सुझाव, और/या बेहतर स्पष्टीकरण दें।

+0

इस [पोस्ट] (http://stackoverflow.com/a/12772447/1011213) – codeqi

उत्तर

26

क्यों UITextField एक प्लेसहोल्डर मूल्य नहीं है और UITextView नहीं है उनके उत्तराधिकार, या यहाँ तक कि प्रोग्रामिंग के साथ कोई लेना देना नहीं है नीचे के रूप में प्रतिनिधि कॉलबैक से छिपा। यह इस बात के बारे में है कि ऐप्पल ने उनके उपयोग को कैसा महसूस किया और उनका उपयोग पसंद किया।

UITextField एक पंक्ति वस्तु है। इसका उपयोग उपयोगकर्ता नाम, पासवर्ड, पता बिट्स, या बहुत कुछ भी दर्ज करने के लिए किया जा सकता है। अक्सर आप उनमें से कई को एक साथ चिपकते हैं, और यह पता लगाना मुश्किल हो सकता है कि किस फ़ील्ड में प्लेसहोल्डर टेक्स्ट के बिना कौन सा डेटा होना चाहिए। जगह धारक हमें क्षेत्र के उद्देश्य को जानने देता है।

Text field example

UITextView पाठ का एक ब्लॉक है। आम तौर पर कई रेखाएं, जो अक्सर उनके साथ जुड़े हेडर होते हैं। नतीजतन, प्लेसहोल्डर पाठ अक्सर उपयोगी नहीं होता है। टेक्स्ट व्यू को स्थैतिक पाठ के साथ पॉप्युलेट होने की अधिक संभावना है, जो प्लेसहोल्डर टेक्स्ट को वास्तव में उपयोगी नहीं बनायेगा।

क्या मुझे लगता है कि ऐप्पल को UITextView के लिए प्लेसहोल्डर संपत्ति जोड़नी चाहिए? हाँ। जब मुझे इसकी ज़रूरत होती है तो इस मौके पर खुद को बनाना मुश्किल है। ऐप्पल कुछ स्थानों पर प्लेसहोल्डर टेक्स्ट का भी उपयोग करता है जहां यह UITextView का उपयोग करता है। निम्नलिखित उदाहरण कैलेंडर प्रविष्टि जोड़ने से है।

Text view example with placeholder

+0

बहुत बहुत धन्यवाद। उत्कृष्ट उत्तर ... –

+0

शायद आपकी पिछली पंक्ति में UITextView का अर्थ है: ऐप्पल कुछ स्थानों पर प्लेसहोल्डर टेक्स्ट का भी उपयोग करता है जहां यह UITextView का उपयोग करता है। – jomafer

51

मुझे नहीं पता कि ऐप्पल में एक जगह शामिल क्यों नहीं है UITextView पर होल्डर विशेषता। लेकिन मैं एक UILabel सबव्यू का उपयोग करके एक जोड़ सकता था जिसमें प्लेसहोल्डर टेक्स्ट होता है।

फिर दिखाने या

- (void)textViewDidBeginEditing:(UITextView *)textView 
{ 
    self.defaultLabel.hidden = YES; 
} 

- (void)textViewDidChange:(UITextView *)txtView 
{ 
    self.defaultLabel.hidden = ([txtView.text length] > 0); 
} 

- (void)textViewDidEndEditing:(UITextView *)txtView 
{ 
    self.defaultLabel.hidden = ([txtView.text length] > 0); 
} 
+0

महान जवाब कोशिश करो! नोट: यदि आपके पास 'viewTillAppear'' में '[txtView बनें फर्स्ट रेस्पॉन्डर]' है, तो 'textViewDidBeginEditing' को हटाएं या' self.defaultLabel.hidden = NO; 'सेट करें। धन्यवाद! – tcd

+0

एक आकर्षण की तरह काम करता है। धन्यवाद –

+0

बिल्कुल सही! और यदि आप अपने नियंत्रक को दिखाते समय टेक्स्टव्यू को प्रीलोड करते हैं, तो उपयोगकर्ता द्वारा पहले से सहेजे गए कुछ मूल्य के साथ, 'self.defaultLabel.hidden = ([txtView.text लंबाई]> 0) जोड़ने के लिए मत भूलना;' प्रीलोड कोड के बाद भी ViewWillAppear में, अन्यथा प्लेसहोल्डर लोड किए गए पाठ – Hunkpapa

संबंधित मुद्दे