约束 UIScrollView 平移?

Posted

技术标签:

【中文标题】约束 UIScrollView 平移?【英文标题】:Constrain UIScrollView panning? 【发布时间】:2013-02-27 12:47:13 【问题描述】:

UIScrollView 具有内置行为“directionLockEnabled”。

启用后,平移将尝试锁定到水平或垂直方向。但是当用户积极尝试对角滚动时 - 它仍然允许对角滚动。

我想取消对角滚动的功能。

非常感谢。

编辑:

我尝试将 UIScrollView 放在另一个内部(每个都有尺寸以限制移动),但平移识别器似乎发生冲突 - 只有一个有效。

我查看了 TTScrollView 以查看它是否可以针对这项工作进行修改 - 但它似乎开箱即用并不能正常工作(在第一个手势后冻结。)

我已尝试向 UIScrollView.panGestureRecognizer 添加第二个操作(侦听器)以调用具有约束值的 setTranslation:inView。这导致了不稳定的跳跃。

还有其他几个途径可能不值得一提。

EDIT2:

Odrakir 的解决方案有效。代码如下:

- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    UIImage* image = [UIImage imageNamed:@"Sofia"];
    UIImageView* imageView = [[UIImageView alloc] initWithImage:image];
    imageView.frame = CGRectMake(0, 0, 1024 * 2, 768 * 2);

    UIScrollView* scrollView1 = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 1024*2, 768)];
    scrollView1.contentSize = CGSizeMake(1024*2, 768*2);
    [scrollView1 addSubview:imageView];

    UIScrollView* scrollView2 = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
    scrollView2.contentSize = CGSizeMake(1024*2, 768);
    [scrollView2 addSubview:scrollView1];

    [self.view addSubview:scrollView2];

【问题讨论】:

放一些代码来解释 【参考方案1】:

我从未尝试过,但我有一个具有水平 ScrollView 的应用程序,其中有多个视图,每个视图都有自己的垂直 ScrollView。

有点像杂志,有不同的文章,每篇文章都有很多页。

两个 ScrollView 都可以工作,用户不能对角滚动。你可以试试。

显示层次为Horizo​​ntal ScrollView-> View ->Vertical ScrollView

【讨论】:

这似乎正在工作 - 一旦我解决了问题,我将发布一些工作代码。非常感谢。

以上是关于约束 UIScrollView 平移?的主要内容,如果未能解决你的问题,请参考以下文章

如何延迟/减慢 UIScrollView 平移速度

缩放后无法平移 UIScrollView

UIScrollView 中的 UIImageView:平移失败

如何区分 UIScrollView 中的平移和滚动

UIScrollView 直到缩放用户操作后才平移

如何禁用 UIScrollView 到平移手势识别器?