当子视图(UITextView)扩展时,TPKeyboardAvoidingScrollView不会扩展

时间:2015-01-25 00:51:43

标签: ios layout uiscrollview storyboard autolayout

TPKeyboardAvoidingScrollView一直在努力防止键盘阻止我的UITextViews:但仅当UITextViews的大小是静态的时。既然我正在尝试改进我的设计以使UITextViews的高度与内容一起增长,那么TPKeyboardAvoidingScrollView并不会增长以适应不断增长的UITextViews。有没有人在TPKeyboardAvoidingScrollView成功使用UITextViews?对于布局,我只使用“重置建议约束”。

我的具体情况是,UITextViews可以增长,以便父级需要超越设备的维度才能显示所有UITextViews。目前还没有发生。一旦UITextView增长,它就会延伸到其他视图之外,以便我看不到其他视图。

更新

以下是我用来调整UITextViews大小的代码。除此之外,我的代码中没有任何重要内容。我按照正常情况在StoryBoard中构建所有内容。我将子视图拖放到位:5个imageViews,两个textViews和三个标签。在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); }

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

好的,如果您对scrollView内的UITextViews布局有疑问,那么您必须使用AutoLayout,并在此问题上阅读Apple's Technical Note。该链接解释了为什么在scrollView内使用AutoLayout可能很棘手,并提出了两种实现方法。希望这会有所帮助。