如何在iOS文本视图上方滚动标题

时间:2013-06-07 14:41:33

标签: ios textview

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

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

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

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

我确信必须有更好的方法来做到这一点,但这是我在寻找解决方案超过一周后发现的唯一方法。如果我能弄清楚如何上传整个Xcode示例项目,我会这样做。

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

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

  1. 在界面构建器中关闭autolayout(取消选中Use Autolayout)。 (iOS 6.x中的autoLayout和scrollViews似乎有问题)
  2. 关闭界面构建器中的文本视图滚动(取消选中“滚动已启用”)
  3. 将文本视图内容插入高度(顶部)设置为标签高度
  4. 在滚动视图中嵌入文本视图和标签。
  5. 设置滚动视图和文本视图的属性以便能够访问其属性
  6. viewDidAppear中的
  7. :动画: 一个。将滚动视图内容大小高度设置为20加上屏幕视图高度或文本视图内容高度加上标签高度的较大值 湾将文本视图委托设置为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;
    }
    
  8. 在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);
        }
    
    }
    
  9. 在界面构建器中设置struts和spring 1.设置左,右和底部的滚动视图和文本视图支柱 2.设置宽度和高度的滚动视图和文本视图弹簧 3.设置左,右和顶部的标签支柱 4.将标签弹簧设置为宽度

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

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

    希望这有助于其他人。

答案 1 :(得分:0)

您正在寻找的是UIScrollView。请查看Apple文档here

可以在Ray Wenderlich网站上找到UIScrollView上的好tutorial