TPKeyboardAvoidingScrollView在阻止键盘阻止UITextViews方面一直非常有用:但仅当UITextViews的大小为静态时。现在,我正在尝试改进设计,以使UITextViews的高度随内容的增长而增加,因此TPKeyboardAvoidingScrollView不会随着容纳不断增长的UITextViews而增长。这里有没有人曾经成功地将TPKeyboardAvoidingScrollView用于增长UITextViews?对于布局,我只使用“重置为建议的约束”。

我的特殊情况是UITextViews可以增长,因此父级需要增长到超出设备的尺寸才能显示所有UITextViews。目前还没有发生。一旦UITextView增长了,它只会扩展到其他视图之外,因此我看不到其他视图。

更新

以下是我用来调整UITextViews大小的代码。除此之外,我的代码中没有任何重要意义。我照常在StoryBoard中构建所有内容。我将子视图拖放到适当的位置:5个imageView,两个textView和三个标签。在viewController .m文件本身中,我正在使用以下委托方法代码:

- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString
*)text {   [self resizeTextViewToFitContent:textView]; }

- (void)resizeTextViewToFitContent:(UITextView *)textView {
    CGRect frame = textView.frame;
    frame.size.height=[self heightOfTextView:textView]+5;
    textView.frame=frame; }

-(CGFloat)heightOfTextView:(UITextView *)textView {
    CGRect reviewTextFrame = [textView.attributedText boundingRectWithSize:CGSizeMake(textView.bounds.size.width, MAXFLOAT)
                                                                   options:NSStringDrawingUsesLineFragmentOrigin
                                                                   context:nil];
    return CGRectGetHeight(reviewTextFrame); }

最佳答案

我认为您应该更新scrollView的内容大小。否则,我看不到TPKeyboardAvoidingScrollView如何知道您正在增加内容大小。您应该具有与此类似的方法:

-(void) updateContentSize: (CGSize *) newSize {
    self.scrollView.contentSize = newSize;
}

并在每次更新UITextView的大小时调用它。

关于ios - subview (UITextView)展开时TPKeyboardAvoidingScrollView不展开,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28132014/

10-09 13:03