在我的视图中,我创建了一个宽度为320,高度为70的滚动视图。
响应用户触摸按钮,我展开了滚动视图,因此它的大小为380(h)x 320(w)。
此代码如下所示:
CGRect scrollviewFrame = CGRectMake(0, 30, 320, 380);
[scrollView setFrame:scrollviewFrame];
[self layoutScrollImages:YES];
CGSize srect = CGSizeMake([scrollView bounds].size.width, (kNumImages * (kScrollObjHeight + 10)));
[scrollView setContentSize:srect];
上述代码段中提到的常量定义为:
const CGFloat kScrollObjHeight = 80;
const NSUInteger kNumImages = 100;
当我调试这个项目时,我可以看到直立是320(宽)x 8000(高);但是我的问题是可滚动区域(用户实际可以触摸以滚动滚动视图)保持与原始大小相同。
我显然错过了一些东西,有人知道它是什么吗?
创建了一个示例项目来说明我遇到的问题,可在此处找到:http://dl.dropbox.com/u/9930498/ScrollViewTest.zip
答案 0 :(得分:2)
您的示例中的问题是您有一个非常奇怪的结构来加载您的视图。因此,您添加到DetailScrollView
实例的视图是DetailScrollView.xib的根视图,而不是scrollview本身,我相信这是您所期望的。
解决问题的最快方法是调整DetailScrollView.xib中的根视图以自动调整宽度和高度。
答案 1 :(得分:0)
UIView无法响应超级视图范围之外的触摸。在您的示例中,您似乎展开了滚动视图,但滚动视图的父级仍然只有100个单位高。
答案 2 :(得分:0)
您应该将scrollView想象成一个窗口,窗口中我指的是scrollView的框架,它也是scrollView检测到您的触摸的坐标。通过将contentView设置为320(w)x 8000(h),您只需更改滚动视图的内容,即该窗口后面的完整区域。
通过展开内容视图,scrollView可以滚动更广泛的区域,但是为了检测更大的矩形中的触摸,您应该更改滚动视图的框架。