Objective c 使用AutoLayout将UITextView扩展到指定高度后重新启用它的滚动
我知道有一些类似的职位,但他们似乎不适合我 我有一个uitextview,我希望其行为类似于Messeng应用程序 我使用自动布局和[textview SetScrolEnabled:NO]允许uitextview在键盘上方动态展开。当然,它会一直增长到屏幕顶部。当它停止生长时,您将看不到任何其他文本 我试图找到它在textViewDidChange中停止增长的高度,并调用[textView SetScrolEnabled:YES],但它在增长之前缩小了初始大小Objective c 使用AutoLayout将UITextView扩展到指定高度后重新启用它的滚动,objective-c,ios8,xcode6,uitextview,ios-autolayout,Objective C,Ios8,Xcode6,Uitextview,Ios Autolayout,我知道有一些类似的职位,但他们似乎不适合我 我有一个uitextview,我希望其行为类似于Messeng应用程序 我使用自动布局和[textview SetScrolEnabled:NO]允许uitextview在键盘上方动态展开。当然,它会一直增长到屏幕顶部。当它停止生长时,您将看不到任何其他文本 我试图找到它在textViewDidChange中停止增长的高度,并调用[textView SetScrolEnabled:YES],但它在增长之前缩小了初始大小 当滚动达到一定高度或无法再增长时
当滚动达到一定高度或无法再增长时,如何启用滚动?您是否尝试为textView设置ContentSize?如果要等待自动布局完成,可以在viewDidLayoutSubviews中执行此操作 以下是有用的链接:
注意:这应该是一个评论,但我没有足够的声誉…这是一项研究,这里是给你的线索
当文本视图距离屏幕顶部达到所需距离时,向文本视图添加高度约束。我是这样做的
-(void)textViewDidChange:(UITextView *)textView {
if (textView.scrollEnabled == NO) {
if (textView.frame.origin.y < 50) {
[textView addConstraint:[NSLayoutConstraint constraintWithItem:textView attribute:NSLayoutAttributeHeight relatedBy:0 toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:textView.frame.size.height]];
textView.scrollEnabled = YES;
}
}
}
-(无效)textViewDidChange:(UITextView*)textView{
如果(textView.scrollEnabled==否){
if(textView.frame.origin.y<50){
[textView addConstraint:[NSLayoutConstraint constraintWithItem:textView属性:NSLayoutAttributeHeight relatedBy:0到Item:nil属性:NSLayoutAttributeNotAttribute乘数:1常量:textView.frame.size.height];
textView.scrollEnabled=是;
}
}
}
当文本视图从视图顶部增长到50点以内时,它会得到一个与当前高度相等的高度约束。到目前为止,我找到的最佳解决方案是保持滚动功能,并根据其内容大小更改文本视图的高度 看起来像这样:
- (void)textViewDidChange:(UITextView *)textView
{
self.consTextViewHeight.constant = MIN(MAX_HEIGHT, textView.contentSize.height + textView.textContainerInset.top);
}
当我第一次尝试时,我认为它不起作用,因为文本随着每个新字符不断向上移动,然后我意识到我必须重新启用UITextView的滚动。非常好,谢谢。