2010-04-30 84 views
0

我有一个UITextView的高度,我们说300.我想要的是当输入的文本到达中途点,滚动开始,就好像它在底部的TextView中。基本上我想以编程方式在textView中设置滚动的开始点。有任何想法吗?谢谢。UITextView滚动 - 人工限制

回答

0

你想这样做是因为键盘导致文本隐藏在它后面吗?如果是这样的话,只需在键盘提高时缩小文本视图的大小(可能会动画,以便在键盘增大时缩小),然后让系统负责滚动。

如果您想让文本以不同的方式滚动到默认值,那么您应该重新考虑一下,对于习惯了滚动到达“正常”级别的用户来说,看起来有点奇怪。

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

我看不到任何东西在UITextView/UIScrollView/UIScrollViewDelegate做到这一点。

+0

谢谢,亚当。响应太大而无法发表评论。请参阅下面的“答案”。谢谢。 – 2010-04-30 05:46:24

+0

在开始/更新块中的“假”tableView部分插入/删除工作非常好,允许更新行高以适应和不用键盘。感谢给我这个机会让我的想法更好,并更好地思考我的选择。 – 2010-04-30 18:45:03

0

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

你对UIImageView的建议正是我所计划的,但是相反。我想要300高度的textView,用键盘覆盖下面的部分,然后在组合的tableView的圆形底部部分的键盘上方有一个UIImageView条子,textView位于该底部。(textView在一个tableViewCell中部分/单元格tableView。)添加图像的条子会使得键盘覆盖的较大的textView看起来像一个小型的textView,当被解散和图像被移除/恢复时,textView会变得更大,以允许用户阅读他们输入的所有笔记。

使用我正在寻找的解决方案,滚动以停止textView中的任何位置,较小的textView将开始在恰好位于键盘正上方的银色图像正上方滚动。

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

...因此解决方案是调整单元格的大小;但涉及reloadData或开始/结束更新,它只适用于单元格或部分插入。然后我想添加一个新的部分,这样reloadData就可以工作,但是我不得不关闭scrollView的滚动功能,这样新的部分永远不会被看到,而且我遇到了麻烦,尽管尝试了每一种scrollEnabled = NO(在tableView,textView,scrollView,父级上)。

最后,向上移动整个屏幕的效果非常好,但是使用大型的textView,那么当向上滚动时,我不得不防止在不可见的上部中键入,因此被拒绝。虽然我只是想到CGRect的大小。高度同样减小,打字可能不会发生在不可见的部分 - 但我仍然失去了分组tableView的圆顶,所以在美观上看起来更好 - 仍然被拒绝。

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

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