【问题标题】:UITextView autoscroll to last lineUITextView 自动滚动到最后一行
【发布时间】:2010-12-21 00:36:22
【问题描述】:

当在 UITextView 中写入的文本超出其完全可以容纳的内容时,文本将向上滚动,并且光标通常会在视图底线上方放置一到两行。这有点令人沮丧,因为我希望我的应用程序能够充分利用文本视图的整个高度。

基本上我想要的是将 UITextView 配置为写到它的最低部分,而不是仅用于滚动。

我见过一些类似的问题hereherehere。但是我还没有看到合适的解决方案。

谢谢

【问题讨论】:

    标签: iphone cocoa-touch uiscrollview uitextview


    【解决方案1】:

    如果我理解正确,你可以使用

    [textView setScrollEnabled:NO];
    

    禁用滚动。当光标到达下边距时不输入怎么办...也许这不是一个好的解决方案,但您可以添加一些阈值([textView text] 中的最大字符)并在

    中返回 NO
    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    

    [[textView text] length] > maxCharacters 的 UITextView 的委托方法。

    【讨论】:

    • 也许我不清楚。我仍然希望视图可以滚动。但我也希望能够在它的整个高度上写文字。这是默认情况下通常不可能发生的事情,因为当您点击最后但最少的一行时,文本将开始弹跳(我可以通过向下滚动文本来告诉 UITextView 延伸到该行下方)。
    【解决方案2】:

    我有一个稍微不同的实现(我想禁用滚动),但我还必须阻止光标跳出我的 UITextView。为此,我在 UITextView 子类中实现了一个 null scrollRectToVisible。像这样:

    - (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
    {
    // do nothing. This fixes the cursor jumping above the field defect.
    }
    

    【讨论】:

    • 这是一个很好的提示。我可能可以重新实现此方法以使文本视图完全按照我需要的方式自动滚动。
    【解决方案3】:

    我发现似乎属性'contentOffset'也可以使用......

    【讨论】:

      【解决方案4】:

      优秀的解决方案是在子类 UITextView 添加行

      -(void) setContentOffset:(CGPoint)contentOffset {
          [self setContentInset:UIEdgeInsetsZero];
          [super setContentOffset:contentOffset];
      }
      

      成功了!

      【讨论】:

        【解决方案5】:

        使用这个

        NSRange myRange=NSMakeRange(outPutTextView.text.length, 0);
        
        [outPutTextView scrollRangeToVisible:myRange];
        

        【讨论】:

          【解决方案6】:

          我已经通过 setframe 得到了最后一行:

          1. 您可以将框架设置为大约行高
          2. 编辑时,在-(BOOL)textView:shouldChangeTextInRange:replacementText:,使用scrollRangeToVisible:,参数为selectedRange
          3. 结束编辑时,设置帧为原始大小

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-01-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-07-14
            • 1970-01-01
            相关资源
            最近更新 更多