2014-12-28 6 views
9

Setup:UITextView Textfarbe nicht eingestellt wird, wenn selektierbare Eigenschaft deaktiviert

Ich habe einfache Textview in Storyboard basierend Ansicht hinzugefügt, mit genommen Auslass in .m-Datei des Viewcontroller. Ich setze Text damit. z.B. [_textViewOne setText:@"Test text"];. Ich verwende Xcode 6.1, kompiliere mit iOS 8.1.

Szenario:

I UITextView nicht berührbar, wie UILabel (ich bin mit UITextView statt UILabel, weil mein Text sein kann 1 oder 2 Zeilen und UILabel richtet Text an vertikal Mitte der Ansicht machen wollte für 1 Zeile und für 2 Zeilen beginnt es von oben links, ich möchte, dass es in beiden Fällen von oben links beginnt, was durch Textview einfach zu erreichen ist.

Um es nicht anfassbar zu machen, habe ich zuerst die selectable Eigenschaft von Storyboard deaktiviert und versucht, die Anwendung auszuführen. Nach dem Deaktivieren der selectable Eigenschaft Text meiner Textansicht nicht mit der Farbe, die ich für sie eingestellt habe (ich habe rote Farbe eingestellt) und es verwendet Standard-Schwarz-Farbe.

enter image description here

Wenn ich selectable überprüfen, folgt Textfarbe, was ich in Interface Builder gesetzt.

Probleme:

  1. Warum von selectable Eigenschaft von Interface Builder unchecking folgt nicht, was Textfarbe i für Textview gesetzt.

  2. Eine weitere Sache, die ich bemerkte, wenn ich selectable Eigenschaft von Interface Builder deaktivieren und versuchte, es wie _textViewOne.selectable = YES; programmatisch zu setzen dann folgen Textview auch nicht, was Textfarbe i in Interface Builder gesetzt, nur die Eigenschaft von Interface Builder Werken Überprüfung . (Versuchte mit bereinigter Build, Neustart Xcode auch)

(Ich weiß, ich sollte nur Textview die Interaktion mit dem Benutzer es nicht berührbar machen deaktiviert, aber ich selectable versehentlich nicht aktiviert und es nahm mir Zeit, um herauszufinden, was los war ., so wollte nur wissen, war ich etwas falsch oder ist dies eine Art von Problem zu tun oder ist die richtige Verhalten dieser Steuerung)

+0

Es gibt einen Bug in iOS zu unterstützen: Text ändern Farbe ändern, auch wird. Sie müssen die Textfarbe ändern ** nach ** den Text ändern, d. H. Tv.text = @ "asd"; tv.textColor = [UIColor was auch immer]. – Borzh

Antwort

2

Für die Interaktion mit einem Textview zu deaktivieren (so dass es nicht berührbar) Sie verwenden können:

_textViewOne.userInteractionEnabled = NO; 
+0

Danke für die Antwort Ben, Aber wie ich bereits erwähnt in meiner Frage, dass ich weiß, Lösung, die Sie zur Verfügung gestellt haben, brauche ich Antworten für Issues 1 & 2. –

3

Sieht aus, als wäre dieser Fehler auf iOS 10 behoben worden.

Allerdings war ich sehr überrascht, als ich diesen Fehler in unserem Bugtracker sah und nicht auf iOS 10 reproduzieren kann, aber erfolgreich auf iOS9 reproduziert.

Lösung in meinem Fall war es in Code in dieser Reihenfolge zu schreiben:

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

P. S.

textViewOne.userInteractionEnabled = false funktioniert nicht für mich, weil ich Textansicht scrollen möchte, aber ohne Auswahlmöglichkeit.

+0

ist es definitiv ein seltsamer Bug! – Fattie

0

Alte Frage, aber ich bin gerade in diese Frage gestern gerannt. Diese Frage und die Antworten haben geholfen.

Allerdings war meine UITextView wie in einer Tabellenzelle, isSelectable = false keine brauchbare Option. Hier ist, was für mich gearbeitet:

  1. Im Storyboard, lassen Sie die UITextView mit userInteractionEnabled geprüft
  2. Im Code die UITextViewtextColor dann setUserInteractionEnabled: verwenden, um es auf NO

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

Mit setUserInteractionEnabled: anstelle von .userInteractionEnabled ist offenbar der Unterschied, der funktioniert.

hoffe, das hilft weiter noch jemand versucht, iOS 9.

Verwandte Themen