Ios UITextView';s NSTextContainer在文本视图高度NSLayoutConstraint更改上的位置错误

Ios UITextView';s NSTextContainer在文本视图高度NSLayoutConstraint更改上的位置错误,ios,iphone,uitextview,nstextcontainer,Ios,Iphone,Uitextview,Nstextcontainer,我将UITextView子类化,使其返回如下固有内容大小: - (void) layoutSubviews { [super layoutSubviews]; if (!CGSizeEqualToSize(self.bounds.size, [self intrinsicContentSize])) { [self invalidateIntrinsicContentSize]; } } - (CGSize)intrinsicContentSize {

我将
UITextView
子类化,使其返回如下固有内容大小:

- (void) layoutSubviews
{
    [super layoutSubviews];

    if (!CGSizeEqualToSize(self.bounds.size, [self intrinsicContentSize])) {
        [self invalidateIntrinsicContentSize];
    }
}

- (CGSize)intrinsicContentSize
{
    /*
     Intrinsic content size of a textview is UIViewNoIntrinsicMetric
     We have to build what we want here: contentSize + textContainerInset should do the trick
     */
    CGSize intrinsicContentSize = self.contentSize;

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f) {
        intrinsicContentSize.width += (self.textContainerInset.left + self.textContainerInset.right ) / 2.0f;
        intrinsicContentSize.height += (self.textContainerInset.top + self.textContainerInset.bottom) / 2.0f;
    }

    return intrinsicContentSize;
}
我在
UITextViewTextDidChangeNotification
中添加了一个观察者,当文本视图内容更改时,我会更新其高度,使其随文本高度增长:

- (void)textViewTextDidChangeNotification:(NSNotification *)notification
{
    UITextView *textView = (UITextView *)notification.object;

    [self.view layoutIfNeeded];
    void (^animationBlock)() = ^
    {
        self.messageInputViewHeightConstraint.constant = MAX(0, self.messageInputView.intrinsicContentSize.height);
        [self.view layoutIfNeeded];
    };

    [UIView animateWithDuration:0.3
                          delay:0
                        options:UIViewAnimationOptionCurveEaseInOut
                     animations:animationBlock
                     completion:nil];
}
但是,当它们的行数足以填充文本视图高度时,有一半的时间在添加新行时,UITextView的NSTextContainer没有像图中所示的那样放置良好

(NSTextContainer以红色勾勒,UITextView以蓝色勾勒)
在添加新行的另一半时间内,NSTextContainer被正确替换

我没有发现如何解决这种奇怪的行为。
我希望你们中的一个人能找到解决办法


谢谢你

你解决这个问题了吗?如果是的话,你是如何修复的?