尽管内容大小正确,但 UIScrollview 不会滚动; textview 子视图框架也表现得很奇怪

Posted

技术标签:

【中文标题】尽管内容大小正确,但 UIScrollview 不会滚动; textview 子视图框架也表现得很奇怪【英文标题】:UIScrollview won't scroll despite having the correct content size; textview subview frame also behaving strangely 【发布时间】:2012-10-24 23:59:09 【问题描述】:

我有一个 UITextView,它从 RSS 提要动态设置其文本。 textview 是 UIScrollview 的子视图。最终,我正在创建一个移动报纸应用程序,因此用户应该能够滚动浏览文本(和其他子视图)。

在 IB 中创建视图后,我添加了

NSString *sourceCode = [NSString stringWithContentsOfURL:[NSURL URLWithString:self.URL] encoding:NSUTF8StringEncoding error:&error];
sourceCode = [self parsehtmlText:sourceCode];
CGSize maximumLabelSize = CGSizeMake(320,9999);
CGSize txtStringSize = [sourceCode sizeWithFont:self.body.font
                              constrainedToSize:maximumLabelSize];
CGRect newlblFrame = CGRectMake(0, 0, 320, txtStringSize.height);
self.body.frame = newlblFrame; //body is the textview
self.body.text = sourceCode;
self.scroll.contentSize=CGSizeMake(320, self.body.frame.size.height+300); //scroll is scrollview

一个典型的 NSLog 会显示body frame = 0, 0, 320, 2088 scrollview frame = 0, 0, 320, 417 scrollview content size = 320, 2388

但是,当我运行应用程序时,body 将其界面构建器高度保持在 196 左右,并且滚动视图不会滚动(当我移动它时,它只会弹回原来的位置)

附带说明,当我尝试使用CGRectMake 手动更改文本视图的框架时,NSLog 显示正确的高度,但视图看起来并没有什么不同。我确保它在 IB 中正确连接,因为我可以调整其他属性,例如背景颜色。

编辑:

在我将 textview 的 cliptoBounds 属性设置为 NO 后,textview 现在会调整其高度并尝试显示整个文本。但是,它在屏幕末尾切断,我仍然无法滚动。

这是我目前看到的。为了方便起见,我将滚动视图的背景颜色设为灰色。我不确定为什么部分滚动视图部分为白色,部分为灰色。 (标题)是一个单独的标签btw)

【问题讨论】:

【参考方案1】:

如果某些UIView 包含另一个类,它是UIView 的子类,并且您需要对此视图执行一些操作,请设置parentView.userInteractionEnabled = YES;

我建议您检查视图的层次结构,也许滚动视图不包含您要显示的文本,例如

for (UIView *view in parentView.subviews)
    NSLog(@"%@", view);

问候

【讨论】:

你想滚动所有屏幕还是只滚动uitextview?如果你把文本放到uitextview 内容大小会自动扩展。请发布您的代码,因为可能我没有正确理解您 代码贴在上面;整个屏幕必须滚动; textview 是几个子视图之一 所以首先你需要扩展 textView 并在滚动视图中移动其余部分。如果 textView 是静止的,更好的方法是使用 UILabel,您可以计算输入文本的大小,例如 CGSize size = [label.text sizeWithFont:label.font minFontSize:10 actualFontSize:&actualFontSize forWidth:200 lineBreakMode:UILineBreakModeTailTruncation];

以上是关于尽管内容大小正确,但 UIScrollview 不会滚动; textview 子视图框架也表现得很奇怪的主要内容,如果未能解决你的问题,请参考以下文章

尽管提供了代表,uiscrollview 不滚动

尽管没有使用Autolayout,但垂直滚动在UIScrollView和iOS7以及Xcode 5中不起作用

尽管添加了自动布局约束,但 UIScrollView 不滚动

关闭另一个视图后 UITableView 滚动内容大小不正确

UIScrollView:没有滚动

调整滚动视图框架的大小时,UIScrollView 子视图的大小调整不正确