我希望有一个简单的UITextView
自动调整大小以适应其内容。
使用AutoLayout这非常简单:我将UITextView
添加到我的视图中,设置两个约束以将UITextView
锚定在左上角,禁用滚动以及它。
预期的行为是每次输入字符时绿色文本视图都会调整其框架的大小。但这只是部分工作:对于某些文本,文本视图决定它将它呈现在两行上,而不是仅在当前行的末尾添加新字符:
我猜这与新的TextKit框架有关,我使用NSLayoutManager
和NSTextContainer
的属性来尝试控制此行为,但无济于事。
另请注意,如果我"硬编码"文本视图的宽度(例如带宽度约束),字符正确地附加在行的末尾,但后来我丢失了文本视图的水平自动调整属性。
如何向UITextView
表明我不希望它突破?
编辑:在further testing之后,该错误似乎只出现在32位拱门上。
答案 0 :(得分:1)
有点骇客(并且希望它在iOS8中得到修复),但以下内容阻止了它的发生:
- (void)textViewDidChange:(UITextView *)textView {
// uber hack to stop characters from jumping to the line below
if (textView.text.length == 1 && ![textView.text isEqualToString:@" "]) {
NSRange cursorPosition = [textView selectedRange];
textView.text = [NSString stringWithFormat:@"%@ ", textView.text];
textView.selectedRange = cursorPosition;
}
[textView invalidateIntrinsicContentSize];
}
惹恼了我一段时间,希望能帮助别人:)
答案 1 :(得分:0)
现在显然已经在iOS 8中修复了。(Xcode 6.0.1(6A317))。