0

我想在文本视图上方滚动文本标题,但找不到有关如何执行此操作的信息。我一直在寻找几天,但甚至无法弄清楚如何查找信息。我希望该功能像 Apple Notes 应用程序一样工作,其中日期文本位于文本输入位置上方,并与文本一起滚动屏幕但不可编辑。

我尝试在 UITextView 上方放置标签,但标签不会随 textView 滚动。我有一个正在使用的示例 Xcode 项目,但不确定是否可以将其上传给其他人以查看我在做什么。我几乎在这个项目上取得了成功,但标签只在横向视图中滚动,而不是在纵向视图中滚动。

我已经阅读了有关 TextViews 和其他几个来源的 Apple 开发人员文档,但没有找到任何关于如何执行此操作的讨论或要遵循的示例。

谁能指出我正确的方向?

4

2 回答 2

2

我确信一定有更好的方法来做到这一点,但这是我在一个多星期试图找到解决方案后发现的唯一可行的方法。如果我能弄清楚如何上传整个 Xcode 示例项目,我会这样做。

这是我发现在 iOS 6.1 和 Xcode 4.5 下工作的方法的解释。我只是在 iPhone 6.1 模拟器上厌倦了这个。

创建全屏文本视图并在文本视图顶部放置标签后,要使用可编辑文本视图使标签滚动到屏幕外,您需要:

  1. 在界面生成器中关闭自动布局(取消选中使用自动布局)。(iOS 6.x 中的 autoLayout 和 scrollViews 似乎存在问题)
  2. 关闭界面生成器中的文本视图滚动(取消选中启用滚动)
  3. 将文本视图内容插入高度(顶部)设置为标签高度
  4. 在滚动视图中嵌入文本视图和标签。
  5. 设置滚动视图和文本视图的属性,以便能够访问它们的属性
  6. 在 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;
    }
    
  7. 在 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.设置标签弹簧的宽度

每次视图改变方向时都需要进行相同的设置。

可能有一种方法可以通过在自动布局下的代码中设置约束来做到这一点,但我几乎不了解约束,更不用说在代码中成功设置它们了。

希望这对其他人有帮助。

于 2013-06-13T02:27:28.837 回答
0

您正在寻找的是称为 UIScrollView。在此处查看 Apple 文档。

在 Ray Wenderlich 网站上可以找到关于 UIScrollView的一个很好的教程。

于 2013-06-07T14:45:05.000 回答