在UITextView attributesText中设置firstLineHeadIndent

时间:2015-01-04 02:59:28

标签: objective-c ios8 uitextview

我在输入UITextView时缩进第一行。这是一个演示。

这有效但我无法弄清楚如何在文本视图缩进时出现。如果你在键盘上添加和删除一个字符,它会正确地缩进空行,但是当它第一次出现时我无法弄清楚如何做到这一点。

@interface ViewController ()
@property (strong, nonatomic) UITextView *textView;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.textView = [UITextView new];
    self.textView.delegate = self;
    [self.view addSubview:self.textView];
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.textView.frame = self.view.bounds;
    [self textViewDidChange:self.textView];
}

- (void)textViewDidChange:(UITextView *)textView {  
    NSMutableParagraphStyle *style = [NSMutableParagraphStyle new];
    style.firstLineHeadIndent = 20.f;   
    NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:textView.text attributes:@{NSParagraphStyleAttributeName: style}];    
    textView.attributedText = string;
}
@end

2 个答案:

答案 0 :(得分:0)

我认为这与您的代码完成相同的工作。

textView.textContainerInset = UIEdgeInsetsMake(8.0f, 20.0f, 8.0f, 0.0f);

答案 1 :(得分:0)

如果我理解正确,当用户点击空的UITextView开始输入时,你想让光标缩进,而且一旦用户开始输入它只会开始缩进。

在viewDidLoad中,使用@和#34初始化attributedText; "然后将文本设置为@""像这样:

-(void)viewDidLoad 
{
    [super viewDidLoad];
    self.textView = [UITextView new];
    self.textView.delegate = self;
    [self.view addSubview:self.textView];

    NSMutableParagraphStyle* style = [NSMutableParagraphStyle new];
    style.firstLineHeadIndent = 20.f;   
    NSMutableAttributedString* string = [[NSMutableAttributedString alloc] initWithString:@" " attributes:@{NSParagraphStyleAttributeName: style}];    
    textView.attributedText = string;
    textView.text = @"";
}

注意:我认为textViewDidChange中的代码不是必需的。