2013-04-08 13 views
19

Hallo Ich arbeite mit iPhone Apps, ich weiß, dass die UITextfield Platzhaltereigenschaft hat. Aber UITextview hat keine Platzhaltereigenschaft. Ich kenne den Prozess, wie Platzhalter für UITextview anpassen. Aber lassen Sie mich den Unterschied wissen.Warum UITextview keine Platzhaltereigenschaft wie UITextField hat

und UITextfield erbt von UIControl, das inturns von UIView ... NSObject erbt. und UITextview erbt von UIScrollView, UIView, UIresponder ... NSOBject. Aber wo ist der Unterschied von Platzhalter Eigentum.

Wie Textfeld enthält Platzhaltereigenschaft, warum Textansicht keinen Platzhalter enthält?

Bitte geben Sie alle Ideen, Vorschläge und/oder geben Sie eine bessere Erklärung.

+0

Versuchen Sie, diese [Beitrag] (http://stackoverflow.com/a/12772447/1011213) – codeqi

Antwort

26

Warum UITextField einen Platzhalter Wert hat und UITextView nicht hat nichts mit ihrer Erbschaft zu tun, oder sogar Programmierung. Es geht darum, wie Apple ihre Verwendung wahrnimmt und ihre Verwendung bevorzugt.

UITextField ist eine einzeilige Position. Es kann zur Eingabe von Benutzernamen, Passwörtern, Adressbits oder so ziemlich alles verwendet werden. Oft haben Sie mehrere von ihnen verklumpt, und es könnte schwierig sein herauszufinden, welches Feld welche Daten ohne Platzhaltertext haben sollte. Der Platzhalter teilt uns den Zweck des Feldes mit.

Text field example

UITextView ist ein Textblock. In der Regel mehrere Zeilen, denen oft ein Header zugeordnet ist. Daher ist Platzhaltertext oft nicht nützlich. Die Textansicht wird wahrscheinlich auch mit statischem Text gefüllt, was wiederum Platzhaltertext nicht wirklich nützlich macht.

Denke ich, Apple sollte sowieso eine Platzhaltereigenschaft für UITextView hinzufügen? Ja. Es ist ärgerlich, wenn ich es bei Gelegenheit brauche, wenn ich es brauche. Apple verwendet auch Platzhaltertext an einigen Stellen, an denen ein UITextView verwendet wird. Das folgende Beispiel bezieht sich auf das Hinzufügen eines Kalendereintrags.

Text view example with placeholder

+0

Vielen Dank. Excellent answer ... –

+0

Sie meinen wahrscheinlich UITextView in Ihrer letzten Zeile: Apple verwendet auch Platzhaltertext an einigen Stellen, wo es ein UITextView verwendet. – jomafer

51

Ich weiß nicht, warum Apple nicht ein PlatzHolder-Attribut auf UITextView enthalten. Aber ich konnte einen hinzufügen, der eine UILabel-Unteransicht verwendet, die den Platzhaltertext enthält.

Dann zeigen oder es von Delegierten Rückrufe verstecken, wie unten

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

große Antwort! Hinweis: Wenn Sie in Ihrem 'viewWillAppear' '[txtView werdenFirstResponder]' haben, entfernen Sie 'textViewDidBeginEditing' oder setzen Sie' self.defaultLabel.hidden = NO; '. Vielen Dank! – tcd

+0

Funktioniert wie ein Charme. Danke –

+0

Perfekt! Und wenn Sie die Textansicht beim Anzeigen Ihres Controllers vorladen, mit einem Wert, den der Benutzer zuvor gespeichert hat, vergessen Sie nicht, 'self.defaultLabel.hidden = ([txtView.text length]> 0);' auch nach dem Preload-Code hinzuzufügen in viewWillAppear, sonst wird der Platzhalter über dem geladenen Text angezeigt – Hunkpapa

Verwandte Themen