当禁用可选属性时,UITextView文本颜色不会被设置

build立 :

我有简单的textview添加在故事板的视图,出口采取viewcontroller的.m文件。 我正在使用它设置文本。 例如[_textViewOne setText:@"Test text"]; 。 我正在使用Xcode 6.1,编译与iOS 8.1。

场景:

我想使UITextView不可触摸,就像UILabel(我使用的是UITextView而不是UILabel,因为我的文本可能是1或2行,UILabel将文本垂直居中alignment1行,对于2行则从左上angular开始,我希望它从左上angular开始,这两种情况都可以通过textview轻松实现)。

为了使它不可触摸的第一我禁用从故事板的selectable属性,并试图运行应用程序。 取消选中selectable属性后,我的文本视图的文本不使用我设置的颜色(我已经设置红色),它使用默认的黑色。

在这里输入图像说明

如果我检查selectable ,文字颜色遵循我在界面生成器中设置的任何内容。

问题:

  1. 为什么从界面生成器中取消selectable属性并不遵循我为textview设置的任何textcolor。

  2. 还有一件事我注意到,如果我从界面生成器取消selectable属性,并尝试以编程方式设置_textViewOne.selectable = YES; 那么TextView也不会跟随我在界面生成器中设置的任何文本颜色,只能从界面生成器检查属性。 (试图干净的构build,也重新启动xcode)

(我知道我应该只是使TextView的用户交互禁用,使其不可触摸,但我意外地取消selectable ,花了我的时间来弄清楚发生了什么,所以只是想知道是我做错了什么或这是某种问题或者这是这个控制的正确行为。)

看起来像这个bug已经修复在iOS 10上。

但是,当我在bugtracker中看到这个错误时,我感到非常惊讶,不能在iOS 10上重现,而是在iOS9上成功重现。

在我的情况下,解决scheme是按照这个顺序写在代码中:

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

PS

textViewOne.userInteractionEnabled = false不适用于我,因为我希望textview是可滚动的,但没有select选项。

为了禁用与textView的交互(使其不可触摸),可以使用:

 _textViewOne.userInteractionEnabled = NO; 

老问题,但我昨天遇到了这个问题。 这个问题和答案帮助。

但是,因为我的UITextView在表格单元格中, isSelectable = false不是一个可用的选项。 这是什么对我有用:

  1. 在故事板中,选中userInteractionEnabled保留UITextView
  2. 在代码中,设置UITextView textColor然后使用setUserInteractionEnabled:将其设置为NO

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

使用setUserInteractionEnabled:而不是.userInteractionEnabled显然是有效的区别。

希望这进一步帮助任何人仍然支持iOS 9。