2013-04-08 14 views
19

gibi bir yer tutucu özelliğine sahip değil Merhaba iPhone uygulamaları ile çalışıyorum, UITextfield'ın yer tutucu özelliği olduğunu biliyorum. Ancak UITextview'in yer tutucu özelliği yoktur. Süreç UITextview için yer tutucunun nasıl özelleştirileceğini biliyorum. Ama lütfen farkı bana bildirin.UITextview neden UITextField

ve UITextfield, UIView ... NSObject öğesinden devralan UIControl öğesinden devralınır. ve UITextroll, UIScrollView, UIView, UIresponder ... NSOBject öğelerinden devralınır. Ama nerede yer tutucu mülkiyet farkıdır.

Metin alanı yer tutucu özelliğini nasıl içerir, metin görünümü neden yer tutucu içermiyor?

Lütfen herhangi bir fikir, öneri verin ve/veya daha iyi bir açıklama verin.

+0

bu [yazı] (http://stackoverflow.com/a/12772447/1011213) – codeqi

cevap

26

aşağıda temsilci geri aramaları gizlemek. Apple'ın kullanımını nasıl algıladığı ve kullanımını nasıl tercih ettiği ile ilgili. Bir satır öğesi

UITextField. Kullanıcı isimlerini, şifrelerini, adres bitlerini veya hemen hemen her şeyi girmek için kullanılabilir. Çoğunlukla bir araya toplandıklarınız var ve hangi alanın yer tutucu metin olmadan hangi alana sahip olduğunu anlamak zor olabilir. Yer tutucu, alanın amacını bize bildirir.

UITextView

Text field example

metin bloğudur. Genellikle onlarla ilişkili bir üstbilgiye sahip olan birkaç satır. Sonuç olarak, yer tutucu metni genellikle kullanışlı değildir. Metin görünümünün, yine metin tutucuyla doldurulması daha olasıdır;

Apple'ın zaten UITextView için bir yer tutucu özelliği eklemesi gerektiğini düşünüyorum. Evet. İhtiyacım olduğunda vesileyle kendi başıma yapmak zorunda olmak sinir bozucu. Apple ayrıca, UITextView kullandığı bazı yerlerde yer tutucu metni kullanır. Aşağıdaki örnek, bir takvim girişi eklemektir.

Text view example with placeholder

+0

Çok teşekkür ederim. Mükemmel cevap ... –

+0

Muhtemelen son satırınızda UITextView anlamına gelir: Apple, UITextView kullandığı bazı yerlerde yer tutucu metni de kullanır. – jomafer

51

Apple'ın neden UITextView'de bir placeHolder özelliği içermediğini bilmiyorum. Ancak, yer tutucu metni içeren bir UILabel alt görünümü kullanarak bir tane ekleyebildim.

Sonra göstermek veya UITextField bir yer tutucu değerine sahiptir ve UITextView değil onların miras, hatta programlama ile bir ilgisi vardır Neden

- (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

büyük bir cevap deneyin! note: "viewWillAppear" öğesinde 'txtViewFirstResponder] varsa, 'textViewDidBeginEditing' öğesini kaldırın ya da' self.defaultLabel.hidden = NO; 'öğesini ayarlayın. Teşekkürler! – tcd

+0

Bir çekicilik gibi çalışır. Teşekkürler –

+0

Mükemmel! Ayrıca, denetleyicinizi gösterirken metin görünümünü önceden yüklerseniz, kullanıcının daha önce kaydettiği bir değerle, 'self.defaultLabel.hidden = ([txtView.text length]> 0);' önyükleme kodundan sonra da eklemeyi unutmayın. viewWillAppear'da, aksi halde yer tutucu, yüklenen metnin üstünde görünür olacak – Hunkpapa