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 不滚动的主要内容,如果未能解决你的问题,请参考以下文章