我有UITextView,我想将它的行高设置为50.0f,所以我使用的是打字数据,但没有任何效果,我的代码在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;
文本没有通过设置typingAttributes来实现,我尝试使用typingAttributes更改颜色和字体但没有任何作用
我已阅读所有堆栈答案和文档
我做错了什么:(
更新的 我甚至试过
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];
它有效,但我需要空文本视图,没有空格或“#bla;'字符
答案 0 :(得分:4)
文档明确指出typingAttributes
用于文本字段的编辑模式。
<强> typingAttributes 强>
要应用于用户输入的新文本的属性。
... 如果文本字段未处于编辑模式,则此属性包含值nil。同样,除非文本字段当前处于编辑模式,否则无法为此属性指定值。
相反,您应该指定attributedText
而不是text
属性。指定属性的机制是通过您指定的NSAttributedString
。
答案 1 :(得分:3)
您可以使用文本视图中的临时文本并设置所有必需属性来在IB中配置段落样式。然后在发布textView.text = nil
上清除文字视图。文本属性应保持不变。
答案 2 :(得分: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;
}
答案 3 :(得分:2)
这里有一个问题 - 如其他答案所述,UITextField
必须处于编辑模式才能生效。如果您在模拟器中运行,并且键盘已隐藏(cmd + k),则在使用计算机键盘键入时,文本字段不处于编辑模式。确保显示模拟器的键盘。
答案 4 :(得分:1)
以编程方式设置attributedText
会重置typingAttributes
。最后设置typingAttributes
。