1

我对这个 iPhone 开发者很陌生,但到目前为止,我已经构建了一个非常好的应用程序,但我偶然发现了这个问题,我这辈子似乎无法解决。

基本上,该应用程序是社交网站的聊天应用程序。除了当前是 UITextbox 的输入框外,一切都在 100% 工作。这很好用,但是我希望该框能够增长并成为带有滚动的多行 UITextbox。我用 UITextview 替换了 UITextbox,一切都很好。当用户输入文本时,我的 UITextview 会扩展,但是我有一个小问题让我抓狂。

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

任何智慧之言将不胜感激。

4

3 回答 3

3

查看three20

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

具体来说,您需要看一下TTTextEditor

TTTextEditor 是一个 UITextView,它可以在你输入时自动增加高度。我用它在 Facebook Chat 中输入消息,它的行为类似于 Apple 的 SMS 应用程序中的编辑器。

您将在此处找到有关如何将three20 添加到您的项目的说明。

于 2009-11-10T00:59:33.307 回答
3

我认为布兰克回答得很好(这将是我的回答)。但是以防万一您不想在项目中包含 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];
    }
  }
}
于 2009-11-10T01:27:30.147 回答
0

我为此创建了 UITextView 的子类:

https://github.com/MatejBalantic/MBAutoGrowingTextView

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

该类主要用于界面生成器,仅适用于自动布局。

于 2014-05-16T13:28:59.280 回答