我对这款iPhone开发工具还不熟悉,但到目前为止我已经构建了一个非常好的应用程序,但我偶然发现了这个问题,对于我的生活我似乎无法解决。
基本上,该应用是社交网站的聊天应用。除了当前是UITextbox的输入框之外,一切都正常工作。这工作正常,但我希望盒子增长,并成为带滚动的多行UITextbox。我用UITextview取代了UITextbox,一切都很好。当用户输入文本时,我将UITextview扩展,但是我有一个小问题让我疯狂。
当UITextview获得焦点时,它会将光标和其中的任何文本移出视图。 UITextview我设置为默认显示2行,然后当文本的高度超出这两行我希望盒子增长(它做)和文本保持向上滚动,这样你就可以看到你是什么打字。如果您查看iPhone上的SMS应用程序,这正是我希望它的工作方式。
任何智慧的话都会受到高度赞赏。
答案 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子类,它根据用户输入的大小自动增长和缩小,并且可以通过最大和最小高度进行约束 - 所有这些都没有一行代码。
该类主要用于“界面”构建器,仅适用于“自动布局”。