UITextView:如何真正禁用编辑?

8 objective-c uitextview ios

我想要做的是让我的UITextView不可编辑.我试过[aboutStable setUserInteractionEnabled:NO]; 方法,但它会导致页面无法访问.

这是当前的代码.

- (void)loadTextView1 {
    UITextView *textView1 = [[UITextView alloc] init];
    [textView1 setFont:[UIFont fontWithName:@"Helvetica" size:14]];
    [textView1 setText:@"Example of editable UITextView"];
    [textView1 setTextColor:[UIColor blackColor]];
    [textView1 setBackgroundColor:[UIColor clearColor]];
    [textView1 setTextAlignment:UITextAlignmentLeft];
    [textView1 setFrame:CGRectMake(15, 29, 290, 288)];
    [self addSubview:textView1];
    [textView1 release];
}
Run Code Online (Sandbox Code Playgroud)

任何建议/答案都表示赞赏.

Ale*_*rge 23

首先,当您可以使用属性时,您正在使用setter方法.其次,您正在设置一大堆非常接近默认值的不必要属性.这是一个更简单的,也许你的代码意图:

- (void)loadTextView1 {
    UITextView *textView1 = [[UITextView alloc] initWithFrame:CGRectMake(15, 29, 290, 288)];
    textView1.text = @"Example of non-editable UITextView";
    textView1.backgroundColor = [UIColor clearColor];

    textView1.editable = NO;

    [self addSubView:textView1];
    [textView1 release];
}
Run Code Online (Sandbox Code Playgroud)

  • 关键是添加`textView1.editable = NO;`.此外,你永远不应该在40个视图上重复代码. (5认同)
  • 您也在代码中使用setter方法.`textView1.text`和`[textView1 setText:`是等价的. (3认同)

Oti*_*ium 20

您可以使用该物业 editable

textView.editable = NO;
Run Code Online (Sandbox Code Playgroud)


Dan*_*ieu 6

Swift 2.0版本

self.textView.editable = false
Run Code Online (Sandbox Code Playgroud)

更多细节可以在Apple UIKit Framework Reference中找到.


要考虑的其他UITextView属性:

  • 文本
  • attributedText
  • 字形
  • 文字颜色
  • 编辑
  • allowsEditingTextAttributes
  • dataDetectorTypes
  • textAlignment
  • typingAttributes
  • linkTextAttributes
  • textContainerInset


kka*_*urt 6

对于 Swift 3.0 和 Swift 4.0:

textView.isEditable = false
Run Code Online (Sandbox Code Playgroud)