iOS SDK:一个ScrollView中有两个TextView?

时间:2011-06-15 12:14:59

标签: ios uiscrollview uitextview

是否可以将两个TextView放在一个ScrollView中,这样只有ScrollView滚动并且两个嵌入的TextView不能独立滚动? (但是如果ScrollView滚动TextViews应该滚动,以便显示文本的其余部分。)

THX。此致,丹尼尔

编辑:

当前代码http://www.muehlbachler.org/spt.zip

声明我需要的内容以及应用到目前为止所执行的操作: 一部分(刚刚需要的部分)是一个简单的端口检查器,如果它们被主机打开或拒绝,它会检查一系列端口。为此,表格下面有两个主要部分,称为“开放端口”和“封闭端口”。在每个主要部分下面是两个显示端口的文本视图(它们是打开的还是关闭的)。我制作了两个textview,因为如果你想看到所有打开/关闭的端口,这是一个更好的体验,因为那样你就不能经常滚动。 现在的问题是每个textview可以独立滚动,但这是令人讨厌的,因为我只想将打开/关闭的端口textviews一起滚动。实际上,必须将两个textview组合在一起,以便它们只能一起滚动。 例如:假设您有100个封闭端口,现在显示它们分为两个文本视图(50:50)。现在,您想快速查看所有已关闭的端口号,并且(现在)您必须滚动两次,因为您必须分别滚动textview1和textview2。现在希望的行为进入:你只想滚动一次,如果你滚动那个时间你想要看到所有关闭的端口(因为两个单独的文本视图也滚动)。 我的想法是,我只是在textview之前放置一个scrollview,然后我可以将它们一起滚动,但这不起作用...... :(

编辑:

图片已添加。由于我的声誉,我不允许添加图片,所以我上传了它:http://www.muehlbachler.org/spt.jpg

2 个答案:

答案 0 :(得分:1)

在尝试保持两个文本视图滚动位置同步时,我会采取略微不同的方法。我会将整体视图设为UIViewController一个UIScrollViewDelegate。我会实现一个scrollViewDidScroll:方法,它会询问滚动到的文本视图,然后告诉其他文本视图滚动到相同的位置。为了防止此方法不断重复的循环,我在发送滚动消息之前设置了一个要检查的标志。如果两个文本视图保证大小相同,则非常容易,但如果它们的大小不同,则可能需要更多工作。也许滚动位置将按百分比计算。也许滚动视图需要了解内容,并滚动到特定标题。

可以实现UIScrollViewDelegate中的其他方法,以便在用户滚动期间保持同步,具体取决于我希望滚动文本视图的行为方式。

回应评论:

听起来百分比计算在这种情况下效果最好。每个滚动视图都有contentSizecontentOffset属性。可以使用(thisView.contentOffset.x/thisView.contentSize.height) * otherView.contentSize.height计算其他视图的偏移量。

我认为如果调用setContentOffset:animated:在另一个滚动上会触发对委托的scrollViewDidScroll:方法的另一次调用,则可能需要该标志。检查标志可能会停止循环。如果设置了标志,请不要告诉其他滚动视图移动,因为这是一个反动的scrollViewDidScroll

每次需要重绘滚动视图时都会调用

scrollViewDidScroll:。因此,在一次用户交互中,此方法可能被调用数百次。仅此一项就能保持两个滚动视图同步。

答案 1 :(得分:0)

为什么在scrollview中需要两个textView然后为什么不使用textview它有滚动视图嵌入看到其余的文本只是滚动textview。