Iphone 使用NavigationBar禁用UIScrollView垂直滚动

Iphone 使用NavigationBar禁用UIScrollView垂直滚动,iphone,ios,xcode,uiscrollview,scroll,Iphone,Ios,Xcode,Uiscrollview,Scroll,所以我已经看过很多关于这个的帖子,我想我已经试过了几乎所有的帖子。我不希望这是一个重复,但我不能得到一个解决我的问题。我有这样的设置: 当我使用滚动视图控制器时,我可以很好地翻页,但我也可以垂直移动图片。我认为这与导航栏强制关闭ScrollView框架有关,但仍然将框架设置为全屏大小。如何防止滚动视图控制器上的任何垂直滚动?我的简历如下: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after lo

所以我已经看过很多关于这个的帖子,我想我已经试过了几乎所有的帖子。我不希望这是一个重复,但我不能得到一个解决我的问题。我有这样的设置:

当我使用滚动视图控制器时,我可以很好地翻页,但我也可以垂直移动图片。我认为这与导航栏强制关闭ScrollView框架有关,但仍然将框架设置为全屏大小。如何防止滚动视图控制器上的任何垂直滚动?我的简历如下:

- (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);

}
-(void)viewDidLoad
{
[超级视图下载];
//加载视图后执行任何其他设置。
self.navigationController.navigationBarHidden=否;
i=0;
_PhotoBundle=[[NSBundle mainBundle]路径ForResourceSoftType:@.jpg“目录:@“Dog_图像”];
_PhotoArray=[[NSMutableArray alloc]initWithCapacity:_PhotoBundle.count];
for(NSString*路径在_PhotoBundle中)
{
[\u PhotoArray addObject:[UIImage imageWithContentsOfFile:path]];
}
对于(int x=0;x<\u PhotoArray.count;x++)
{
CGRect帧;
frame.origin.x=self.mainsroll.frame.size.width*x;
frame.origin.y=0;
frame.size=self.mainsroll.frame.size;
UIImage*nextImg=[[UIImage alloc]init];
nextImg=[[u PhotoArray objectAtIndex:x];
UIImageView*nextIV=[[UIImageView alloc]initWithFrame:frame];
[nextIV setImage:nextImg];
[self.main滚动添加子视图:nextIV];
//NSLog(@“通过%d”,x);
}
self.maincroll.contentSize=CGSizeMake(self.maincroll.frame.size.width*\u PhotoArray.count,self.maincroll.frame.size.height);
}

非常感谢

UIScrollView
仅当它的-
contentSize
设置为大于其框架时才滚动其内容。因此,当您设置
self.maincoll.contentSize
时,它的
contentSize.height
比它的边框更多

在使用苹果的类之前,尝试至少阅读苹果的文档。很无聊。但是薪水可以解决所有无聊的事情

顺便说一下。您在显示UIImageView对象时未正确使用UIScrollView。尝试观看Apple WWDC会话(可以从iTunes下载)——有两三个会话是关于如何仅使用三个UIImageView对象绘制无休止的UIScrollView页面


所以我找到了一篇贴子,很好地解释了这一点:

当我换衣服的时候

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


它使contentSize不再大于边界。。。我读过一些东西,但没有完全理解。我希望这能帮助其他陷入困境的人…

谢谢你的回答。我已经阅读了很多苹果的资料,我正在iTunes中寻找WWDC的资料(到目前为止还没有任何报道)。我知道constentSize.height,这就是我认为它可能链接到导航栏的原因。我在iTunes上找不到WWDC的内容。你有我可以搜索的特定标题吗?再次感谢。你还有其他想法吗?我觉得这个答案没有多大帮助,因为我已经阅读了大部分文档,在iTunes上找不到WWDC的内容。谢谢,这里有一个2011年WWDC会议的链接:您还应该寻找“高级滚动查看技术”视频会议。此外,您还必须购买一个apple developer程序来访问apple WWDC会话。在2011年WWDC之前有一个会议-(寻找标题“使用滚动视图设计应用程序”)在查看示例代码和观看视频后,他们基本上在做同样的事情。它们仍然为每个图像创建图像视图,只是在分层方面做得更好。虽然他们也不使用故事板,但我需要学习如何将其翻译并链接到故事板中。感谢您的指导。NSLog(@“self.maincroll.frame:(%f,%f,%f,%f)”、self.maincroll.frame.origin.x、self.maincroll.frame.origin.y、self.maincroll.size.height、self.maincroll.size.width的输出是什么是否在视图中显示?这是你所期望的,还是有所不同?ScrollTest[361:c07]self.maincroll.frame:(0.000000,20.000000 460.000000 320.000000)这是在我将contentSize更改为1.0之前,有趣的是,当我在替换1.0:
ScrollTest[418:c07]self.maincroll.frame:(0.000000,20.000000 460.000000 320.000000)时,它是一样的
有趣。。。这似乎是机器中的幽灵。很高兴你明白了!
CGSizeMake(self.mainScroll.frame.size.width * _PhotoArray.count, 1.0);