UIScrollView 不滚动

Posted

技术标签:

【中文标题】UIScrollView 不滚动【英文标题】:UIScrollView doesn't scroll 【发布时间】:2010-07-27 10:44:41 【问题描述】:

我遇到了 UIScrollView 的问题。 我设置了它的 frame.size、contentSize(比 frame 大),但我仍然无法滚动。 我的程序有这样的结构: MainMenuViewController -> ScrollBarController -> UIScrollView

这是MainMenuViewController方法viewDidLoad的一部分

ScrollBarController *imgScrollBarCtrl = [[ScrollBarController alloc] init];
// set images folder
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *imagesFolder = [documentsDirectory stringByAppendingPathComponent:@"SavedImages"];

// set scroll bar frame size
imgScrollBarCtrl.view.frame = CGRectMake(0.0, 0.0, 1024.0, 128.0);
[imgScrollBarCtrl setImagesFolder:imagesFolder];

// method adds subviews UIImageView to the scroll bar 
// and set view's contentSize according thumbnails number
[imgScrollBarCtrl recalculateThumbnailsBounds];

[topPanel addSubview:imgScrollBarCtrl.view];
[imgScrollBarCtrl release];

ScrollBarController 类中有 loadView 方法:

- (void)loadView 

    UIScrollView *aScrollView = [[UIScrollView alloc] init];

    aScrollView.scrollEnabled = YES;

    self.view = aScrollView;

    [aScrollView release];

我在 ScrollBarController 的 recalculateThumbnailsBounds 中设置了我的 scrollView 的 contentSize。它设置正确(1620.0、128.0),但滚动不起作用。 我尝试通过添加以下内容在 MenuViewController 中设置 contentSize: ((UIScrollView *)imgScrollBarCtrl.view).contentSize(2000.0, 128.0); 但效果不佳。

在设置 contentSize 并将帧大小和 contentSize 打印到控制台后,我执行NSLog(...) - 它们已正确设置 freme.size = 1028.0,128.0, contentSize = 1620.0,128.0。

我检查了两个控制器 - MainMenuController 和 ScrollBarController 中的方法 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event。只有主控制器触发此方法。 ScrollBarController 从不接收触摸事件...可能这是个问题...

有人知道可能出了什么问题吗?干杯!

【问题讨论】:

【参考方案1】:
[[UIScrollView alloc] initWithFrame:(CGRect)frame]

所有的 UIView 后代都在使用该方案。

此外,您的代码 sn-p 并不清楚您要实现的目标,因此您的代码中可能存在其他问题。

您应该首先尝试在 - (void)loadView 方法中设置 contentSize,看看您是否获得了正确的行为。

【讨论】:

我已经尝试过了。在您的推荐后再次尝试。我有同样的事情 - 滚动视图和子视图布局是正确的,但滚动视图不滚动。您究竟需要哪些方法才能获得更好的画面?我只是认为这些方法就足够了。其他方法更多用于计算 UIImageView 视图的帧并将它们添加到滚动视图。

以上是关于UIScrollView 不滚动的主要内容,如果未能解决你的问题,请参考以下文章

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

启用 UIScrollView 的缩放重置缩放视图转换

以编程方式选择 UIScrollView 中显示的当前按钮

滚动条滚动但 UIScrollView 不滚动

UIScrollView 不滚动?

UIScrollView 中有多个 UIViewController 可以吗?