我确信一定有更好的方法来做到这一点,但这是我在一个多星期试图找到解决方案后发现的唯一可行的方法。如果我能弄清楚如何上传整个 Xcode 示例项目,我会这样做。
这是我发现在 iOS 6.1 和 Xcode 4.5 下工作的方法的解释。我只是在 iPhone 6.1 模拟器上厌倦了这个。
创建全屏文本视图并在文本视图顶部放置标签后,要使用可编辑文本视图使标签滚动到屏幕外,您需要:
- 在界面生成器中关闭自动布局(取消选中使用自动布局)。(iOS 6.x 中的 autoLayout 和 scrollViews 似乎存在问题)
- 关闭界面生成器中的文本视图滚动(取消选中启用滚动)
- 将文本视图内容插入高度(顶部)设置为标签高度
- 在滚动视图中嵌入文本视图和标签。
- 设置滚动视图和文本视图的属性,以便能够访问它们的属性
在 viewDidAppear:animated: 中。将滚动视图内容大小高度设置为 20 加上屏幕视图高度或文本视图内容高度加上标签高度中的较大者 b. 将文本视图委托设置为 self
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
float screenHeight = self.view.bounds.size.height;
// set the scroll view content height to 20 plus the greater of the view height or the text view content size height plus the label height
screenHeight = MAX(screenHeight, self.textView.contentSize.height + 20);
self.scrollView.contentSize = CGSizeMake(self.view.bounds.size.width, 20 + screenHeight);
// set the text view delegate
self.textView.delegate = self;
}
在 textView 委托方法 textViewDidChange 中动态设置文本视图高度:如果文本视图内容高度大于视图边界高度小于标签高度: 1. 将文本视图框架设置为视图边界宽度和文本视图内容高度加上标签高度 2. 将滚动视图内容高度设置为视图边界宽度和文本视图边界高度加上标签高度
// dynamically set the text view content size height
-(void) textViewDidChange:(UITextView *)textView {
if (self.textView.contentSize.height > self.view.bounds.size.height - 20) {
self.textView.frame = CGRectMake(0.0, 0.0, self.view.bounds.size.width, self.textView.contentSize.height + 20);
self.scrollView.contentSize = CGSizeMake(self.view.bounds.size.width, self.textView.bounds.size.height + 20);
}
}
在界面生成器中设置支柱和弹簧 1. 为左、右和底部设置滚动视图和文本视图支柱 2. 为宽度和高度设置滚动视图和文本视图支柱 3. 为左、右和顶部设置标签支柱4.设置标签弹簧的宽度
每次视图改变方向时都需要进行相同的设置。
可能有一种方法可以通过在自动布局下的代码中设置约束来做到这一点,但我几乎不了解约束,更不用说在代码中成功设置它们了。
希望这对其他人有帮助。