Iphone iOS-同时滚动两个UITextView

Iphone iOS-同时滚动两个UITextView,iphone,objective-c,ios,ios4,uitextview,Iphone,Objective C,Ios,Ios4,Uitextview,我环顾了一下四周,但没有找到任何东西可以清楚地解释我如何可以同时滚动两个不可编辑的UITextView。我想我可能需要使用scrollRangeToVisible,或者setContentOffset,尽管我无法让它们中的任何一个工作 是否有人可以向我提供任何有关这方面的示例/样本或文档 编辑:为了澄清,我希望能够滚动一个UITextView,并在第二个UITextView上反映滚动后的更改 谢谢 - (void)scrollViewDidScroll:(UIScrollView *)scro

我环顾了一下四周,但没有找到任何东西可以清楚地解释我如何可以同时滚动两个不可编辑的UITextView。我想我可能需要使用
scrollRangeToVisible
,或者
setContentOffset
,尽管我无法让它们中的任何一个工作

是否有人可以向我提供任何有关这方面的示例/样本或文档

编辑:为了澄清,我希望能够滚动一个UITextView,并在第二个UITextView上反映滚动后的更改

谢谢

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
并根据
scrollView.contentOffset
设置另一个的scrollView
setContentVisible


请注意,
UIScrollView
的某些方法将调用
scrollViewDidScroll
,即使是以编程方式调用。这适用于scrollRangeToVisible,并将在循环中结束,除非您采取措施阻止此循环。我不认为
setContentOffset
或设置
scrollView2.contentOffset=CGPointMake(…,…)
会调用
scrollViewDidScroll
。然而,我不会用鲜血签下这个。准备好看到循环并采取措施避免它。(例如,在调用
setContentOffset
之前设置布尔实例变量,然后在
scrollViewDidScroll
中重新设置,然后在
return;
中重新设置)

使用UIScrollViewDelegate方法获取有关第一个滚动视图的滚动操作的信息,然后以编程方式滚动第二个滚动视图,如下所示:

- (void) scrollViewDidScroll:(UIScrollView *)view1 {
    scrollView2.contentOffset = view1.contentOffset;
}

继续前面的回答,为了提供更多信息,我生成了以下代码:

在接口(.h)中:

并为同步滚动添加此功能

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    if (isScrolling) {
        return;
    }


    isScrolling = YES;

    if (scrollView.tag == TEXT_VIEW_1_TAG) {

        [self.textView2 setContentOffset:scrollView.contentOffset animated:NO];

    } else if (scrollView.tag == TEXT_VIEW_2_TAG) {

        [self.textView1 setContentOffset:scrollView.contentOffset animated:NO];
    }

    isScrolling = NO;
}

正如赫尔曼·克莱克(Hermann Klecker)所建议的那样,
isScrolling
变量停止滚动循环,让用户体验更好。使用Fabian Kreiser提出的代码,用户一离开手指,滚动就会停止,这让人觉得奇怪。

Hmmm,也许我误解了你的意思,但让我澄清一下我想要实现的目标。我希望能够滚动一个UITextView的内容,并让第二个UITextView对滚动做出响应。我想如果我理解正确的话,使用UIScrollView,我可以在不改变内容视图的情况下滚动它们,好的。我一次给出了两个答案,因为我不确定你想要什么。答案已相应编辑。您必须使用两个滚动视图。在第一种情况下,您需要在滚动时做出反应,然后通过编程将另一个滚动到相同的延伸(偏移)。只要避免一个循环。
#import "DoubleTextViewController.h"

#define TEXT_VIEW_1_TAG 1001
#define TEXT_VIEW_2_TAG 1002

@interface DoubleTextViewController () {

    BOOL isScrolling;
}

@end

@implementation DoubleTextViewController

@synthesize textView1, textView2;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view..

    isScrolling = NO;

    [self.textView1 setTag:TEXT_VIEW_1_TAG];
    [self.textView2 setTag:TEXT_VIEW_2_TAG];

    [self.textView1 setDelegate:self];
    [self.textView2 setDelegate:self];
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    if (isScrolling) {
        return;
    }


    isScrolling = YES;

    if (scrollView.tag == TEXT_VIEW_1_TAG) {

        [self.textView2 setContentOffset:scrollView.contentOffset animated:NO];

    } else if (scrollView.tag == TEXT_VIEW_2_TAG) {

        [self.textView1 setContentOffset:scrollView.contentOffset animated:NO];
    }

    isScrolling = NO;
}