选择文本视图时,UITextview内容会向上移动

时间:2009-11-10 00:52:49

标签: iphone scroll uitextview

我对这款iPhone开发工具还不熟悉,但到目前为止我已经构建了一个非常好的应用程序,但我偶然发现了这个问题,对于我的生活我似乎无法解决。

基本上,该应用是社交网站的聊天应用。除了当前是UITextbox的输入框之外,一切都正常工作。这工作正常,但我希望盒子增长,并成为带滚动的多行UITextbox。我用UITextview取代了UITextbox,一切都很好。当用户输入文本时,我将UITextview扩展,但是我有一个小问题让我疯狂。

当UITextview获得焦点时,它会将光标和其中的任何文本移出视图。 UITextview我设置为默认显示2行,然后当文本的高度超出这两行我希望盒子增长(它做)和文本保持向上滚动,这样你就可以看到你是什么打字。如果您查看iPhone上的SMS应用程序,这正是我希望它的工作方式。

任何智慧的话都会受到高度赞赏。

3 个答案:

答案 0 :(得分:3)

结帐three20

  

Three20是iPhone UI类的集合,如照片查看器和常规实用程序,如HTTP磁盘缓存。 Three20源自Facebook iPhone应用程序,这是有史以来下载次数最多的iPhone应用程序之一。

具体来说,您需要查看TTTextEditor

  

TTTextEditor是一个UITextView,它可以在您键入时自动增长。我使用它在Facebook Chat中输入消息,的行为类似于Apple的短信应用程序中的编辑器。

您可以找到有关如何向项目here添加three20的说明。

答案 1 :(得分:3)

我认为Blaenk完美回答(这将是我的回答)。但是,如果你不想在你的项目中包含Three20(它有点大),下面是TTTextEditor的相关代码。您应该能够在扩展文本视图的任何地方调用它。

- (void)scrollContainerToCursor:(UIScrollView*)scrollView {
  if (_textView.hasText) {
    if (scrollView.contentSize.height > scrollView.height) {
      NSRange range = _textView.selectedRange;
      if (range.location == _textView.text.length) {
        [scrollView scrollRectToVisible:CGRectMake(0,scrollView.contentSize.height-1,1,1)
          animated:NO];
      }
    } else {
      [scrollView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO];
    }
  }
}

答案 2 :(得分:0)

我为此创建了UITextView的子类:

https://github.com/MatejBalantic/MBAutoGrowingTextView

它是一个基于自动布局的轻量级UITextView子类,它根据用户输入的大小自动增长和缩小,并且可以通过最大和最小高度进行约束 - 所有这些都没有一行代码。

该类主要用于“界面”构建器,仅适用于“自动布局”。