【发布时间】:2010-03-21 09:16:42
【问题描述】:
在 UIScrollView 中显示大量文本(取自应用程序中的 .txt 文件)以便用户滚动浏览的最佳方式是什么?文本的长度是可变的。
【问题讨论】:
标签: iphone objective-c xcode uiscrollview
在 UIScrollView 中显示大量文本(取自应用程序中的 .txt 文件)以便用户滚动浏览的最佳方式是什么?文本的长度是可变的。
【问题讨论】:
标签: iphone objective-c xcode uiscrollview
在 Interface Builder 上打开 Attributes Inspector(如果尚未打开 - command-1)并取消选中“Editable”。
还要注意下面有一个滚动视图部分。确保选中“滚动”。
希望这对某人有所帮助(该帖子已有一年之久,所以我猜现在发布该帖子的人不需要此信息)。
【讨论】:
我来这里寻找答案,发现所有答案都是错误的——或者完全错误。
正确的方法是单独使用 UITextView。由于它是 UIScrollView 的后代,因此它具有内置的滚动功能和许多用于调整格式的功能,例如 insets 等。
如果您打算只显示文本,则需要明确禁用编辑。您可以通过将“可编辑”属性设置为 false 来执行此操作。 如果要禁用文本选择机制,请将“selectable”属性设置为 false。
在较新版本的 iOS 中,UITextView 增加了对NSTextContainer 的支持,让您可以更好地控制格式。
【讨论】:
我为我工作的一种方法是创建 UILabel,设置文本,然后按其大小设置滚动视图的内容大小。 Here is an example
引用:
// alocate and initialize scroll
UIScrollView *myScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 460.0f)];
// alocate and initialize label
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 460.0f)];
// add long text to label
myLabel.text = @"Lorem ipsum... long text here";
// set line break mode to word wrap
myLabel.lineBreakMode = UILineBreakModeWordWrap;
// set number of lines to zero
myLabel.numberOfLines = 0;
// resize label
[myLabel sizeToFit];
// set scroll view size
myScroll.contentSize = CGSizeMake(myScroll.contentSize.width, myLabel.frame.size.height);
// add myLabel
[myScroll addSubview:myLabel];
// add scroll view to main view
[self.view addSubview:myScroll];
【讨论】:
将 UITextView 的使用转化为 UIScrollView。我不推荐这个,因为 UITextView 是 UIScrollView 的子类。 Apple 也推荐同样的方法。
在这种情况下使用 UILabel 作为子视图,
【讨论】:
UITextView 放入UIScrollView,因为它确实是UIScrollView 的子类。 (查看文档!)因此,滚动和 UI 交互可能会变得混乱。不过,我同意UILabel 可能不是最好的选择,因为UITextView 已经内置了滚动功能。
将 UITextView 放入 UIScrollView。
【讨论】:
UITextView 是 UIScrollView 的子类。它已经内置了滚动行为!