代码之家  ›  专栏  ›  技术社区  ›  Mihai Damian

UITextView自动滚动到最后一行

  •  3
  • Mihai Damian  · 技术社区  · 15 年前

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

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

    我见过一些类似的问题 here here here . 然而,我还没有看到一个合适的解决方案。

    6 回复  |  直到 7 年前
        1
  •  8
  •   Jane Sales    15 年前

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

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

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

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

    这是工作!

        3
  •  1
  •   Ashok    11 年前

    用这个

    NSRange myRange=NSMakeRange(outPutTextView.text.length, 0);
    
    [outPutTextView scrollRangeToVisible:myRange];
    
        4
  •  0
  •   Morion    15 年前

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

    [textView setScrollEnabled:NO];
    

    [textView text] )并且不返回

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    

    UITextView的委托方法,如果 [[textView text] length] > maxCharacters .

        5
  •  0
  •   iXcoder    15 年前

    我发现“contentOffset”属性似乎也可以使用。。。

        6
  •  0
  •   Diego D    11 年前

    1. 你可以 到大约一行高度
    2. textView:shouldChangeTextInRange:replacementText: ,使用 scrollRangeToVisible: selectedRange
    3. 当您结束编辑时, 设定帧 原样