2014-12-28 16 views
9

Setup:UITextView kolor tekstu nie uzyskiwanie ustawione gdy wyłączona właściwość wyboru

Mam proste TextView dodany w widoku serii ujęć w oparciu, z wylotem w pliku .m podjętej viewcontroller użytkownika. Ustawiam tekst za jego pomocą. np. [_textViewOne setText:@"Test text"];. Używam Xcode 6.1, kompilując z iOS 8.1.

Scenariusz:

Chciałem zrobić UITextView non dotykalne, jak UILabel (używam UITextView zamiast UILabel ponieważ mój tekst może być 1 lub 2 linii i UILabel wyrównuje tekst w pionie centrum widzenia dla 1 linia i 2 linie zaczynają się od lewej górnej strony, chcę, aby zaczynały się od lewego górnego rogu w obu przypadkach, co jest łatwo osiągalne w trybie tekstowym).

Aby uniemożliwić dotykanie, najpierw wyłączałem właściwość selectable z Storyboard i próbowałem uruchomić aplikację. Po odznaczeniu właściwości selectable tekst w moim tekście nie używa ustawionego dla niego koloru (mam ustawiony kolor czerwony) i używa domyślnego koloru czarnego.

enter image description here

Jeśli sprawdzasz selectable, kolor tekstu następuje cokolwiek ustawić w interfejsie konstruktora.

Issues:

  1. Dlaczego odznaczenie od selectable nieruchomości z interfejsu konstruktora nie wynika co textcolor mogę ustawić dla TextView.

  2. jeszcze jedno zauważyłem, jeśli odznacz selectable własność z interfejsu konstruktora i próbował ustawić go programowo jak _textViewOne.selectable = YES; następnie również TextView nie wynika co textcolor i ustawione w interfejsie konstruktora, tylko sprawdzenie tej nieruchomości od prac konstruktora interfejsu . (Próbowałem z czystej produkcji, ponowne uruchomienie Xcode także)

(Wiem, że powinienem po prostu zrobić interakcji użytkownika TextView jest wyłączony, aby nie dotykalne, ale przypadkowo zaznaczona selectable i zajęło mój czas, aby dowiedzieć się, co się dzieje , więc chciałem tylko wiedzieć, czy robię coś nie tak, albo to jest jakiś problem, albo to jest poprawne zachowanie tej kontroli.)

+0

Jest to błąd w iOS: zmiana tekstu zmieni kolor również. Musisz zmienić kolor tekstu ** po ** zmianie tekstu, tzn. Tv.text = @ "asd"; tv.textColor = [UIColor cokolwiek]. – Borzh

Odpowiedz

2

Do wyłączania interakcji z textView (uniemożliwiając dotykanie) można użyć:

_textViewOne.userInteractionEnabled = NO; 
+0

Dzięki za odpowiedź Ben, Ale jak już wspomniałem w moim pytaniu, że znam rozwiązanie, które podałeś, potrzebuję odpowiedzi na problemy 1 i 2. –

3

Wygląda na to, że ten błąd został naprawiony na iOS 10.

Jednak byłem bardzo zaskoczony, gdy zobaczyłem ten błąd w naszym bugtrackerze i nie mogę go odtworzyć na iOS 10, ale udało się go odtworzyć na iOS9.

rozwiązanie w moim przypadku było napisanie go w kodzie w tej kolejności:

textView.textColor = UIColor.red 
textView.isSelectable = false 

PS:

textViewOne.userInteractionEnabled = false nie działa dla mnie, ponieważ chcę, aby tekst był przewijany, ale bez opcji wyboru.

+0

to zdecydowanie dziwny błąd! – Fattie

0

Stare pytanie, ale wczoraj wpadłem na ten problem. To pytanie i odpowiedzi pomogły.

Jednak od mojego UITextView jak w komórce tabeli, isSelectable = false nie był użyteczną opcją. Oto co pracował dla mnie:

  1. W serii ujęć, pozostaw UITextView z userInteractionEnabled sprawdzone
  2. W kodzie ustawić UITextViewtextColor następnie użyć setUserInteractionEnabled: aby ustawić go NO

self.textView.textColor = [UIColor blackColor]; [self.textView setUserInteractionEnabled:NO];

Używanie setUserInteractionEnabled: zamiast .userInteractionEnabled to widocznie różnica, która działa.

Nadzieja to dodatkowo pomaga ktoś próbuje nadal wspierać iOS 9.

Powiązane problemy