iOS 7使用自动布局自动调整UITextView的大小会随机断线

iOS 7使用自动布局自动调整UITextView的大小会随机断线,ios,cocoa,uitextview,autolayout,textkit,Ios,Cocoa,Uitextview,Autolayout,Textkit,我想要一个简单的UITextView,它可以自动调整大小以适应其内容 使用AutoLayout,这非常简单:我将UITextView添加到我的视图中,在左上角设置两个约束以锚定UITextView,禁用滚动,就这样 预期的行为是,每次我键入字符时,绿色文本视图都会调整其框架的大小。但这只能部分起作用:对于某些文本,文本视图决定在两行上渲染它,而不只是在当前行的末尾添加新字符: 我猜这与新的TextKit框架有关,我使用了NSLayoutManager和NSTextContainer的属性试图

我想要一个简单的
UITextView
,它可以自动调整大小以适应其内容

使用AutoLayout,这非常简单:我将
UITextView
添加到我的视图中,在左上角设置两个约束以锚定
UITextView
,禁用滚动,就这样

预期的行为是,每次我键入字符时,绿色文本视图都会调整其框架的大小。但这只能部分起作用:对于某些文本,文本视图决定在两行上渲染它,而不只是在当前行的末尾添加新字符:

我猜这与新的TextKit框架有关,我使用了
NSLayoutManager
NSTextContainer
的属性试图控制这种行为,但没有效果

还请注意,如果我“硬编码”文本视图的宽度(例如,使用宽度约束),字符将正确地追加到行的末尾,但随后我将丢失文本视图的水平自动调整大小属性

如何向
UITextView
指示我不希望它断线

编辑:之后,该错误似乎只出现在32位ARCH上。

有点黑客行为(希望它在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];
}

有一段时间我很恼火,所以希望这能帮助其他人:)

这显然在iOS 8中得到了修复。(Xcode 6.0.1(6A317))。

您有没有找到解决方案?我看了下面@danhopwood的建议,但没有任何区别。TBH,我把这个错误放在一边,继续前进(我有一个改变,知道我的所有用户都将运行64位设备)。希望它在iOS 8中得到修复…好的。因为我使用UITextView作为UILabel替换,所以我只在字符串的开头和结尾添加了一个空格字符。似乎工作得很得体…在文本末尾添加一个空格解决了问题。