Scrollview阻止父视图

时间:2013-08-12 11:05:33

标签: iphone uiscrollview touch subview

我的屏幕底部有滚动视图。当我点击按钮它加载滚动视图。但是scrollview占据了完整的父视图。对于某些rectMake,我无法控制底部视图。如果我使用scrollview,我无法处理其他一些按钮操作,并点击其他子视图的事件。

代码:

scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,self.view.frame.size.height)]; 

  scrollview.scrollEnabled=YES;
for (int i = 0; i<[self.array count]; i++ ) {
            NSLog(@"index %d",i);



            imgView1=[[UIButton alloc]initWithFrame:CGRectMake(20+(i*74), 500, 72, 72)];


            [imgView1 setTag:i+1];

            [imgView1 addTarget:self action:@selector(Clicked:) forControlEvents:UIControlEventTouchUpInside];

            [imgView1 setImage:((Mysof *)[self.array objectAtIndex:i]).photo forState:UIControlStateNormal];

            [scrollview addSubview:imgView1];


    }

         [scrollview setContentSize:CGSizeMake(CGRectGetMaxX(imgView1.frame),self.view.frame.size.height)];

        [self.view addSubview:scrollview];

日志:

scroll is <UIScrollView: 0x1f03d550; frame = (0 0; 320 568); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x1f037090>; layer = <CALayer: 0x1f036670>; contentOffset: {0, 0}>

2 个答案:

答案 0 :(得分:2)

你这样做:

scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,self.view.frame.size.height)]; 

相反试试这个:

int y = self.view.frame.origin.y+ self.view.frame.size.height-200;
scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0,y,320,200)];

此处,Scrollview将显示在视图的底部,尺寸为320X200。你可以根据自己的要求改变高度。当你改变高度然后也改变self.view.frame.origin.y + self.view.frame.size.height-changedHeight的值。

并制作Imageview框架如下:

imgView1=[[UIButton alloc]initWithFrame:CGRectMake(20+(i*74), 0, 72, 72)];

内容大小应小于滚动视图高度,仅适用于水平滚动。 这里,宽度应该是所有imageview的宽度+给定空间的总和。所以我想说在你的for循环中尝试使用像这样的宽度变量,并使用宽度到内容大小,以便根据图像的总宽度设置。

    int Width = 0;
    for (int i = 0; i<[self.array count]; i++ ) {

      Width = Width + 20+(i*74);
    }

  [scrollview setContentSize:CGSizeMake(Width,imgView1.frame.size.height+20)];

希望它能帮助!!

答案 1 :(得分:0)

将scrollView的高度设置为底部按钮的原点

scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,400)];

这里我假设您的按钮/底部视图的y位置为400.相反,您可以根据需要进行更改