【问题标题】:UITextView: How to really disable editing?UITextView:如何真正禁用编辑?
【发布时间】:2012-04-09 00:59:25
【问题描述】:

我正在尝试禁用对我的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];
}

【问题讨论】:

  • 有什么方法可以在不更改我的代码的情况下做到这一点?只需添加一些东西?

标签: ios objective-c uitextview


【解决方案1】:

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

目标-C

- (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];
}

斯威夫特

func loadTextView1() {
    let textView1 = UITextView(frame: CGRect(x: 15, y: 29, width: 290, height: 288))
    textView1.text = "Example of non-editable UITextView"
    textView1.backgroundColor = .clear

    textView1.isEditable = false

    addSubView(textView1)
}

【讨论】:

  • 现在没有回头路了……在 40 次浏览中做到了。不过还是谢谢。
  • 关键位是textView1.editable = NO;的添加。此外,您不应该在 40 个视图上重复代码。
  • 您也在代码中使用 setter 方法。 textView1.text[textView1 setText: 是等价的。
  • 是的,但您的回答是“首先,您使用的是 setter 方法,而您只能使用属性”。
  • 使用 setter 代替属性没有什么问题。
【解决方案2】:

您可以使用属性editable

textView.editable = NO;

【讨论】:

  • 抱歉,我对 Objective-C 还很陌生...我应该把它放在哪里?
  • 因此,如果您希望在加载视图时它不可编辑,请放置 textView1.editable = NO;在 loadTextView1 方法中
【解决方案3】:

Swift 2.0 版本

self.textView.editable = false

更多详情可以在苹果UIKit Framework Reference找到。


需要考虑的其他 UITextView 属性:

  • 文字
  • attributedText
  • 字体
  • 文本颜色
  • 可编辑
  • 允许编辑文本属性
  • dataDetectorTypes
  • 文本对齐
  • 打字属性
  • linkTextAttributes
  • textContainerInset

【讨论】:

    【解决方案4】:

    对于 Swift 3.0 和 Swift 4.0:

    textView.isEditable = false
    

    【讨论】:

      【解决方案5】:

      如果您使用的是界面生成器,您可以在属性检查器中取消选中“可编辑”。

      【讨论】:

        【解决方案6】:

        哇,这人肯定要死了!很抱歉添加另一个,但我应该提一下,您可以通过以下方式消除任何用户不确定性:

        commentTextView.isUserInteractionEnabled = false
        

        【讨论】:

          【解决方案7】:

          Swift 3.0

          func loadTextView1()
           {
              let textView1 = UITextView()
              textView1.text = "Example of non-editable UITextView"
              textView1.backgroundColor = UIColor.clear
              textView1.frame = CGRect(x: 15, y: 29, width: 290, height: 288)
              textView1.isEditable = false
              addSubView(textView1)
          }
          

          否则,在 Xcode 的 Interface Builder 中,取消选中文本视图的 Attributes Inspector 中的“Editable”。

          【讨论】:

            【解决方案8】:

            如果您想阻止所有用户交互,您需要执行以下 2 件事:

                self.commentText.isEditable = false
                self.commentText.isSelectable = false
            

            【讨论】:

              猜你喜欢
              • 2016-04-27
              • 2014-03-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-08-17
              • 1970-01-01
              • 2019-06-14
              • 1970-01-01
              相关资源
              最近更新 更多