拖动两个 UIScrollViews

Posted

技术标签:

【中文标题】拖动两个 UIScrollViews【英文标题】:drag for two UIScrollViews 【发布时间】:2012-07-25 16:25:06 【问题描述】:

我有两个 UIScrollView,aScroll 和 bScroll。而bScroll 是aScroll 的subView。我面临的问题是,我想拖动 bScroll 并且不影响 aScroll。 有人可以在这里帮助我吗? 谢谢。

- (void)viewDidLoad

[super viewDidLoad];
UIScrollView *aScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(50, 50, 400, 400)];
aScroll.backgroundColor = [UIColor grayColor];
aScroll.contentSize = CGSizeMake(401, 401);
[self.view addSubview:aScroll];
[aScroll release];

UIScrollView *bScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(75, 75, 150, 150)];
bScroll.backgroundColor = [UIColor lightGrayColor];
bScroll.contentSize = CGSizeMake(500, 500);
[aScroll addSubview:bScroll];
[bScroll release];

UILabel *bLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 30, 30)];
bLabel.text = @"B";
[bScroll addSubview:bLabel];
[bLabel release];

UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 250, 100, 40)];
aLabel.text = @"A";
[aScroll addSubview:aLabel];
[aLabel release];

【问题讨论】:

这是示例代码。当我拖动 bLable 到达边缘时,aLabel 会一起拖动。这不是我想要的,我该怎么办?? 【参考方案1】:

我的猜测是您需要使用scrollViewWillBeginDragging: 检测触摸,如果 bScroll 是移动的,您可以设置 aScroll 的属性:

if([scrollView isEqual: bScroll])
aScroll.scrollEnabled = NO;

要稍后恢复运动,您可以使用scrollViewDidEndDecelerating:

aScroll.scrollEnabled = YES;

记住这些是委托方法,您至少需要将 bScroll 的委托设置为您的ViewController。希望这会有所帮助。

【讨论】:

如果两个UIScrollViews位于不同的UIViewController,那怎么办?

以上是关于拖动两个 UIScrollViews的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能在程序的两个实例之间拖动一个点?

求教: 如何在EXCEL中,拖动下拉,一行数字的其中两个数字实现递增。

在两个 UiViewControllers 和 UIViews 之间实现拖动和滑动转换? [关闭]

**防止在水平滚动视图内拖动两个 CollectionView **

禁用 Google API DirectionsService 中的两个可拖动标记之一

matplotlib pyqt5画布上两个可拖动点之间的线