我遇到UIScrollView问题。 我设置了它的frame.size,contentSize(大于帧),但我仍然无法滚动。 我的程序有这样的sctucrure: 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。
我检查了两个控制器中的方法- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
- MainMenuController和ScrollBarController。只有主控制器触发此方法。 ScrollBarController从不接收触摸事件......可能这是一个问题...
有没有人知道可能出现什么问题?干杯!
答案 0 :(得分:-1)
[[UIScrollView alloc] initWithFrame:(CGRect)frame]
所有UIView后裔都在使用该方案。
此外,您的代码段并不清楚您要尝试实现的目标,因此您的代码可能会遇到其他问题。
您应该首先尝试在 - (void)loadView方法中设置contentSize,然后查看是否获得了正确的行为。