3

我有 UITextView,我想将它的行高设置为 50.0f,所以我使用了 typingAttributes,但没有任何效果,我的代码在 ViewDidAppear 方法中是这样的

UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(0, 0, 300, 300)];

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.minimumLineHeight        = 50.0f;
paragraphStyle.lineHeightMultiple       = 50.0f;
paragraphStyle.maximumLineHeight        = 50.0f;

NSDictionary *textViewAttributeDic = [NSDictionary dictionaryWithObject:paragraphStyle forKey:NSParagraphStyleAttributeName];
textView.typingAttributes  = textViewAttributeDic;

文本不受设置类型属性的影响,我尝试使用类型属性更改颜色和字体但没有任何效果

我已阅读所有堆栈答案和文档

我做错了什么:(

更新: 我什至尝试过

UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(0, 0, 300, 300)];

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.minimumLineHeight        = 50.0f;
paragraphStyle.lineHeightMultiple       = 50.0f;
paragraphStyle.maximumLineHeight        = 50.0f;

NSDictionary *textViewAttributeDic = [NSDictionary dictionaryWithObject:paragraphStyle forKey:NSParagraphStyleAttributeName];
textView.attributedText  = [[NSAttributedString alloc] initWithString:@"" attributes:textViewAttributeDic];

当我尝试

textView.attributedText  = [[NSAttributedString alloc] initWithString:@"blahblah" attributes:textViewAttributeDic];

它有效,但我需要没有空格或“blah”字符的空文本视图

4

5 回答 5

4

该文档明确指出这typingAttributes是针对文本字段的编辑模式。

打字属性

应用于用户输入的新文本的属性。

...如果文本字段未处于编辑模式,则此属性包含值 nil。同样,除非文本字段当前处于编辑模式,否则您不能为此属性分配值。

相反,您应该分配attributedText而不是text属性。指定属性的机制是通过NSAttributedString您分配的。

于 2013-09-15T21:53:49.767 回答
3

您可以在 IB 中使用文本视图中的临时文本配置段落样式并设置所有必需的属性。然后你在启动时清除你的文本视图textView.text = nil。文本属性应保持不变。

在此处输入图像描述

于 2013-09-27T08:52:59.167 回答
2

在 ios6 我这样解决了它,在 textView 委托中我写道:

- (void)textViewDidChange:(UITextView *)textView{

     // 1st save current selected range ... we gonna use this value in 5th step
     NSRange textViewCurrentRange =  textView.selectedRange;

     // 2nd disable scrolling in textview
     [textView setScrollEnabled:NO];

     // 3rd set the new enterd text as attributed string to textview
     [textView setAttributedText:[[NSAttributedString alloc]initWithString:textView.text attributes:self.textAttributes]];

     // 4th enable scrolling
     [textView setScrollEnabled:YES];

     // 5th re set selected range so text inidicator will get back to it's place
     textView.selectedRange = textViewCurrentRange;
 }
于 2013-11-13T14:10:29.287 回答
2

以编程方式设置attributedText重置typingAttributes. 最后设置typingAttributes

于 2014-06-08T17:39:16.657 回答
2

这是一个问题 - 正如其他答案中所述,UITextField必须处于编辑模式才能使其正常工作。如果您在模拟器中运行,并且键盘是隐藏的 (cmd+k),如果您使用计算机的键盘键入,则文本字段不处于编辑模式。确保显示模拟器的键盘。

于 2017-02-07T03:45:28.170 回答