UITextView: How to really disable editing?

China☆狼群 提交于 2020-06-27 07:28:43

问题


I am trying to disable editing on my UITextView. I have tried [aboutStable setUserInteractionEnabled: NO], but it causes the page to not be accessible.

Here is the current code.

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

回答1:


First of all, you are using setter methods when you could just be using properties. Secondly, you are setting a whole bunch of unnecessary properties that are very close to the default. Here is a much simpler and perhaps what you intended with your code:

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

Swift

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)
}



回答2:


You can use the property editable

textView.editable = NO;



回答3:


Swift 2.0 Version

self.textView.editable = false

More details can be found in the apple UIKit Framework Reference.


Additional UITextView Attributes to consider:

  • text
  • attributedText
  • font
  • textColor
  • editable
  • allowsEditingTextAttributes
  • dataDetectorTypes
  • textAlignment
  • typingAttributes
  • linkTextAttributes
  • textContainerInset



回答4:


For Swift 3.0 and Swift 4.0:

textView.isEditable = false



回答5:


If you are using interface builder, you can just uncheck "Editable" in the Attributes Inspector.




回答6:


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)
}

Otherwise in Xcode's Interface Builder uncheck "Editable" in the Attributes Inspector for the text view.




回答7:


If you want to prevent all user interaction you need to do the 2 following things:

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



回答8:


Wow, this one's certainly being done to death! Sorry to add another but I should mention you can remove any user uncertainty with:

commentTextView.isUserInteractionEnabled = false


来源:https://stackoverflow.com/questions/10067853/uitextview-how-to-really-disable-editing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!