Tworzę aplikację, w której użytkownik musi napisać jakieś informacje. W tym celu potrzebuję UITextField
linii wieloliniowej (ogólnie UITextField
jest to pojedyncza linia).
Gdy korzystam z Googlinga, znajduję odpowiedź dotyczącą użycia UITextView
zamiast tego UITextfield
do tego celu.
ios
uitextfield
uitextview
raaz
źródło
źródło
Odpowiedzi:
UITextField
jest konkretnie tylko jednowierszowy.Twoje wyszukiwanie w Google jest prawidłowe, musisz użyć
UITextView
zamiastUITextField
do wyświetlania i edycji tekstu wielowierszowego.W Konstruktorze interfejsów dodaj
UITextView
żądane miejsce i zaznacz pole „edytowalne”. Domyślnie będzie wielowierszowy.źródło
Możesz sfałszować UITextField za pomocą UITextView. Problem, który będziesz miał, polega na tym, że tracisz funkcję zastępcy.
Jeśli zdecydujesz się użyć UITextView i potrzebujesz symbolu zastępczego, wykonaj następujące czynności:
W twoim widokuDidLoad ustaw kolor i tekst na symbole zastępcze:
Następnie spraw, aby symbol zastępczy zniknął po wybraniu UITextView:
Gdy użytkownik zakończy edycję, upewnij się, że istnieje wartość. Jeśli nie, dodaj ponownie symbol zastępczy:
Inne funkcje, które mogą być konieczne do sfałszowania:
UITextField często pisze wielką literą każdą literę, możesz dodać tę funkcję do UITableView:
Pola UITextField zwykle nie przewijają się:
źródło
Ok, zrobiłem to z jakąś sztuczką;) Najpierw zbuduj
UITextField
i zwiększono tosize
tak:Następnie zbuduj
UITextView
dokładnie w tym samym obszarze, w którym utworzyłeś mójUITextField
, i usuń gobackground color
. Teraz wygląda na to, że masz wiele liniiTextField
!źródło
UITextView
. Chodzi o to, aby UITextField zachowywał się inaczej niż aUITextView
.UITextView
iUITextfield
: dziedziczą zUIScrollView
vsUIControl
, domyślnie nie można edytować domyślnie vs. domyślnie można edytować, multilinii vs. jednowierszowe, różne protokoły delegowania, brak symboli zastępczych vs. symbol zastępczy.UITextView
dotyczy akapitów tekstu. Użyj go, jeśli potrzebujesz akapitu tekstu, a nie inaczej.Oprócz zachowania wielu linii główna różnica między UITextView a UITextField polega na tym, że UITextView nie proponuje symbolu zastępczego. Aby ominąć to ograniczenie, możesz użyć UITextView z „fałszywym symbolem zastępczym”.
Zobacz to pytanie SO, aby uzyskać szczegółowe informacje: Symbol zastępczy w UITextView .
źródło
Jeśli musisz mieć pole UITextField z 2 wierszami tekstu, jedną z opcji jest dodanie UILabel jako widoku podrzędnego pola UITextField dla drugiego wiersza tekstu. Mam w swojej aplikacji UITextField, którego użytkownicy często nie zdają sobie sprawy, że można go edytować, dotykając, i chciałem dodać do napisu UITextField mały tekst napisów z napisem „Stuknij, aby edytować”.
źródło
Tak, UITextView jest tym, czego szukasz. Będziesz musiał poradzić sobie z niektórymi rzeczami inaczej (np. Klawisz powrotu), ale możesz dodać do niego tekst, a to pozwoli ci przewijać w górę i w dół, jeśli w środku jest za dużo tekstu.
Ten link zawiera informacje o tworzeniu ekranu do wprowadzania danych:
utwórz ekran wprowadzania danych
źródło
użyj UITextView zamiast UITextField
źródło
Uzupełnieniem powyższej odpowiedzi h4xxr, łatwiejszym sposobem dostosowania wysokości pola UITextField jest wybranie stylu kwadratowej ramki w inspektorze atrybutu-> Pole tekstowe. (Domyślnie stylem ramki pola UIT jest elipsa).
Odniesienie: Odpowiedział Brian tutaj: Jak ustawić wysokość pola UITextField?
źródło
Jest dla mnie inna opcja:
Podklasa UITextField i nadpisywanie:
W tej metodzie możesz na przykład:
Ten kod wyrenderuje tekst przy użyciu tylu wierszy, ile jest wymaganych, jeśli prostokąt ma wystarczającą ilość miejsca. Możesz określić dowolny inny atrybut w zależności od potrzeb.
Nie używać:
co wymusi renderowanie tekstu w jednej linii
źródło