UITextView滚动 - 人工限制

时间:2010-04-30 03:01:47

标签: iphone scroll uitextview

我有一个高度为300的UITextView。我想要的是当键入的文本到达中间点时,滚动开始就好像它位于textView的底部。基本上我想以编程方式设置textView中的点以便开始滚动。有任何想法吗?感谢。

2 个答案:

答案 0 :(得分:0)

你想这样做是因为键盘导致文本隐藏在它后面吗?如果是这样,只需在键盘抬起时缩小textview的大小(可能是动画,以便随着键盘的增长而缩小),然后让系统负责滚动。

如果你试图让文本以不同的方式滚动到默认值,也许你应该重新考虑,那么当它达到“正常”水平时,习惯于滚动的人看起来会有些奇怪。

但是如果你必须这样做,也许你可以在引发UITextView之后使用添加为子视图的UIImageView - 将其视为UITextView的非活动扩展。制作与UITextView宽度相同的图像,使其符合您的要求,并将其定位,使其覆盖UITextView的下边缘。它看起来像textview比它更长,但textview的滚动将在文本接近其实际边框时起作用,而不是假的。

我在UITextView / UIScrollView / UIScrollViewDelegate中看不到任何内容。

答案 1 :(得分:0)

谢谢,亚当。我确实这样做是因为键盘导致文本隐藏在后面,我会在一秒钟内完成。

你对UIImageView的建议正是我的计划,但反之亦然。我想要300高度textView,键盘覆盖下部,然后在textView所在的分组tableView的圆形底部键盘上方有一个UIImageView条子。(textView在一个tableViewCell中section / single cell tableView。)添加图像的条子会使键盘覆盖的较大textView在键盘存在时看起来像一个小的textView,当被解除并删除/恢复图像时,textView会更大,允许用户阅读他们输入的所有笔记。

使用我正在寻找的解决方案,滚动停止在textView中的任何位置,较小的textView将开始滚动到正确的位置,就在键盘正上方的条子图像上方。

现在到“只调整textView”的建议。说起来容易做起来难。因为textView在一个分组的tableView中,当键盘存在时,我在tableViewCell中创建了一个较小的textView,角度很圆,但是当我将textView调整得更大时,只有中心部分延伸(大约90%的圆角矩形在中心) ),而不是侧面的圆角(每侧宽度的5%保持不变)。接下来想一想:不能在不增加单元格高度的情况下扩展textView ......

...因此解决方案是调整细胞大小;但这涉及reloadData或开始/结束更新,它只适用于单元格或节插入。我当时正在考虑添加一个新的部分,以便reloadData可以正常工作,但是我必须关闭scrollView上的滚动,这样新的部分永远不会被看到,尽管尝试了每个排列,但我遇到了麻烦。 scrollEnabled = NO(在tableView,textView,scrollView,parent)上。

最后,向上移动整个屏幕效果很好,但是使用大的textView,我必须防止在向上滚动时键入不可见的上部,这样就被拒绝了。虽然我只是想到了CGRect的尺寸。同样减少了高度,但是在不可见的部分可能不会出现打字 - 但我仍然会丢失分组tableView的圆顶顶部,因此它看起来更漂亮 - 仍然被拒绝。

所以,这是我的故事,那是我的一天。任何人的帮助将不胜感激。

我认为我最好的选择是将“假”部分添加到tableView并将其设置为隐藏,这样我就可以获得新的单元格高度。但是我仍然需要关闭tableView滚动或scrollView滚动以便textView中的滚动不会不必要地移动整个屏幕,因为隐藏部分的空间可能会在那里,因此可以滚动。