设置:
我在基于故事板的视图中添加了简单的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
属性后,我的文本视图文本不使用我为其设置的颜色(我设置了红色)并使用默认的黑色。
如果我检查selectable
,文本颜色将遵循我在界面构建器中设置的颜色。
问题:
为什么从界面构建器中取消选中selectable
属性并不遵循我为textview设置的任何文本颜色。
我注意到的另一件事是,如果我从界面构建器中取消选中selectable
属性并尝试以编程方式设置它_textViewOne.selectable = YES;
,那么TextView也不会遵循我设置的任何文本颜色接口构建器,仅检查接口构建器中的该属性是否有效。 (尝试使用干净的构建,也重新启动xcode)
(我知道我应该禁止textview的用户互动,使其不可触摸,但我不小心取消选中selectable
并花了我的时间弄清楚发生了什么,所以只是想知道我做错了什么或这是某种问题,或者这是这种控制的正确行为。)
答案 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
不是一个可用的选项。这对我有用:
UITextView
保留为userInteractionEnabled
已检查UITextView
textColor
,然后使用setUserInteractionEnabled:
将其设置为NO
self.textView.textColor = [UIColor blackColor];
[self.textView setUserInteractionEnabled:NO];
使用setUserInteractionEnabled:
代替.userInteractionEnabled
显然是有效的。
希望这进一步帮助任何试图仍然支持iOS 9的人。