使用NavigationBar禁用UIScrollView垂直滚动

时间:2012-11-01 18:09:11

标签: iphone ios xcode uiscrollview scroll

所以我已经看到了很多其他帖子,我想我几乎已经尝试了所有这些帖子。我不希望这是一个重复,但我无法解决我的问题。我有这样的设置:  enter image description here

当我到达我的滚动视图控制器时,我可以翻页很好,但我也可以垂直移动图片。我认为它与NavigationBar有关,迫使ScrollView框架向下,但仍然将框架设置为全屏尺寸。如何防止滚动视图视图控制器上的任何垂直滚动?我的.m在下面:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.navigationController.navigationBarHidden = NO;

i = 0;

_PhotoBundle = [[NSBundle mainBundle] pathsForResourcesOfType:@".jpg"inDirectory:@"Dog_Images"];

_PhotoArray = [[NSMutableArray alloc] initWithCapacity:_PhotoBundle.count];
for (NSString* path in _PhotoBundle)
{
    [_PhotoArray addObject:[UIImage imageWithContentsOfFile:path]];
}
for (int x = 0; x < _PhotoArray.count; x++)
{
    CGRect frame;
    frame.origin.x = self.mainScroll.frame.size.width * x;
    frame.origin.y = 0;
    frame.size = self.mainScroll.frame.size;

    UIImage *nextImg = [[UIImage alloc] init];
    nextImg = [_PhotoArray objectAtIndex:x];

    UIImageView *nextIV = [[UIImageView alloc] initWithFrame:frame];
    [nextIV setImage:nextImg];

    [self.mainScroll addSubview:nextIV];
    //NSLog(@"Pass %d", x);
}

self.mainScroll.contentSize = CGSizeMake(self.mainScroll.frame.size.width * _PhotoArray.count, self.mainScroll.frame.size.height);

}

非常感谢!!

2 个答案:

答案 0 :(得分:6)

所以我发现了一篇完美解释它的帖子:

How to disable just vertical scrolling in a UIScrollView?

当我改变我的

CGSizeMake(self.mainScroll.frame.size.width * _PhotoArray.count, self.mainScroll.frame.size.height);

CGSizeMake(self.mainScroll.frame.size.width * _PhotoArray.count, 1.0);

它使contentSize大于边界......我读过的东西,但没有完全理解。我希望这可以帮助那些坚持这个的人...

答案 1 :(得分:1)

UIScrollView只有当 - contentSize设置得比它的框架大时,才会滚动它的内容。因此,当您设置self.mainScroll.contentSize时,它的帧数会增加contentSize.height

在使用它的课程之前,请至少阅读Apple的文档。这很无聊。但薪水可以弥补所有无聊的东西。

顺便说一下。您正在使用UIScrollView错误地显示UIImageView对象。尝试观看Apple WWDC会话(可以从iTunes下载) - 有两到三个会话关于如何仅使用三个UIImageView对象来绘制无休止的UIScrollView分页

Apple's documentation on UIScrollView