使UIScrollView同时滚动和缩放

时间:2011-02-26 17:05:16

标签: iphone cocoa-touch uiscrollview

我遇到了一些麻烦,让UIScrollView同时展示了滚动和缩放。我的班级(哪些子班级UIScrollView)有一个UIView作为子视图,在这个子视图中我使用CALayer。一旦应用程序启动,我就可以滚动视图,但只要我使用捏合手势进行缩放,滚动功能就会停止工作,只有缩放才能工作。我的代码:

bpmGraphView = [[UIView alloc] init];   
//--- configure the scroll-view and add the graph-view as a subview
[self setZoomScale:1.0];
[self setContentSize:CGSizeMake(1000.0, 169.0)];
[self setMultipleTouchEnabled:YES];
[self setScrollEnabled:YES];
self.maximumZoomScale = 20.0;
self.minimumZoomScale = 0.05;
self.clipsToBounds = YES;   
self.delegate = self;   //--- set the scroll-view delegate to self  
[self addSubview:bpmGraphView];

委托方法:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    return [self bpmGraphView];
}

有什么想法吗?

修改

某些尺寸:我的UIScrollView为320x169,位于屏幕左边缘右侧7个像素处。它内部的(可滚动的)UIView应该具有相同的高度,但是从UIScrollView的左边开始30像素,并且在远到右边的某个地方结束 - 1000只是一个测试数字。我添加到UIView的子图层应该具有与其超级视图相同的大小和位置。 我将使用适当的框架初始化UIView,并报告应用程序行为的任何变化。

2 个答案:

答案 0 :(得分:1)

初看起来我只是注意到一个很大的 ContentSize宽度和一个小的高度 ...你确定你需要1000 x(只)169吗?

bpmGraphView的维度是什么?

为什么不用尺寸初始化 bpmGraphView?这是一个 UIView ,您应该使用 initWithFrame:来初始化它,而不仅仅是 init

并且:给我们 UIScrollView 的维度,您给我们的唯一维度是 UIScrollView.contentSize ......

答案 1 :(得分:1)

参考这个苹果示例代码,它包含有关scrollview的所有内容 http://developer.apple.com/library/ios/#samplecode/ScrollViewSuite/Introduction/Intro.html