禁用可选属性时,UITextView文本颜色未设置

时间:2014-12-28 13:50:33

标签: ios uitextview xcode6.1

设置:

我在基于故事板的视图中添加了简单的textview,并在viewcontroller的.m文件中使用了outlet。我正在使用它设置文本。例如[_textViewOne setText:@"Test text"];。我正在使用Xcode 6.1,使用iOS 8.1进行编译。

情景:

我想让UITextView不可触摸,就像UILabel一样(我使用的是UITextView而不是UILabel,因为我的文本可能是1或2行,UILabel在垂直中心对齐1行文本和2行从它开始左上角,我希望它在两种情况下从左上角开始,这可以通过textview轻松实现)。

为了使其不可触摸,我首先从Storyboard中禁用它的selectable属性并尝试运行应用程序。取消选中selectable属性后,我的文本视图文本不使用我为其设置的颜色(我设置了红色)并使用默认的黑色。

enter image description here

如果我检查selectable,文本颜色将遵循我在界面构建器中设置的颜色。

问题:

  1. 为什么从界面构建器中取消选中selectable属性并不遵循我为textview设置的任何文本颜色。

  2. 我注意到的另一件事是,如果我从界面构建器中取消选中selectable属性并尝试以编程方式设置它_textViewOne.selectable = YES;,那么TextView也不会遵循我设置的任何文本颜色接口构建器,仅检查接口构建器中的该属性是否有效。 (尝试使用干净的构建,也重新启动xcode)

  3. (我知道我应该禁止textview的用户互动,使其不可触摸,但我不小心取消选中selectable并花了我的时间弄清楚发生了什么,所以只是想知道我做错了什么或这是某种问题,或者这是这种控制的正确行为。)

3 个答案:

答案 0 :(得分:4)

看起来这个错误已在iOS 10上修复。

然而,当我在我们的bugtracker中看到这个bug并且无法在iOS 10上重现时,我感到非常惊讶,但是在iOS9上成功地再现了它。

我的解决方案是按照以下顺序在代码中编写它:

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

<强> P.S。

textViewOne.userInteractionEnabled = false对我不起作用,因为我希望textview可滚动,但没有选择选项。

答案 1 :(得分:2)

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

_textViewOne.userInteractionEnabled = NO;

答案 2 :(得分:0)

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

但是,由于我的UITextView与表格格式相同,isSelectable = false不是一个可用的选项。这对我有用:

  1. 在故事板中,将UITextView保留为userInteractionEnabled已检查
  2. 在代码中,设置UITextView textColor,然后使用setUserInteractionEnabled:将其设置为NO
  3. self.textView.textColor = [UIColor blackColor]; [self.textView setUserInteractionEnabled:NO];

    使用setUserInteractionEnabled:代替.userInteractionEnabled显然是有效的。

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