作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
更新这似乎只是 IOS 7 的问题。一个很好的解决方法已添加到已接受的答案中。
我创建了一个包含 UITextView 和 UILabel 的自定义控件,其中包含 TextView 的标题,即我的控件。我的控件会自动更改大小以适应 TextView 和标题。在此之前,我更改了 TextView 的大小以适合文本。这最有效。
我添加了功能,因此 TextView 会自动滚动到最后一行。或者这至少是我正在尝试的。只要最后一行不包含空文本,它就可以正常工作。如果文本为空,它会向下滚动,因此您只能看到大约一半的光标。
我做错了什么?
所以你可以更好地理解我做了一些图片:
这是我输入一个词并进行一些换行。 (仍然不足以让它滚动)
然后我换行。 (按 enter)仔细观察光标是如何减半的。这就是问题所在!
我制作了下一张图片,因此您可以准确地看到我的预期。
最佳答案
其他答案的问题:
解决方案是将其添加到 TextView 委托(delegate)中:
- (void)textViewDidChange:(UITextView *)textView {
CGRect line = [textView caretRectForPosition:
textView.selectedTextRange.start];
CGFloat overflow = line.origin.y + line.size.height
- ( textView.contentOffset.y + textView.bounds.size.height
- textView.contentInset.bottom - textView.contentInset.top );
if ( overflow > 0 ) {
// We are at the bottom of the visible text and introduced a line feed, scroll down (iOS 7 does not do it)
// Scroll caret to visible area
CGPoint offset = textView.contentOffset;
offset.y += overflow + 7; // leave 7 pixels margin
// Cannot animate with setContentOffset:animated: or caret will not appear
[UIView animateWithDuration:.2 animations:^{
[textView setContentOffset:offset];
}];
}
}
关于ios - 如何在键入/编辑时使 UITextView 滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18070537/
我是一名优秀的程序员,十分优秀!