2013-08-12 1 views
1

У меня есть прокрутка в нижней части экрана. когда я нажимаю кнопку, он загружает прокрутку. Но scrollview занимает полное родительское представление. Я не могу контролировать снизу представление для некоторого rectMake. Если я использую scrollview, я не могу обработать некоторые другие действия с кнопками и нажать событие для других подзонов.Scrollview blocking parentview

код:

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}> 
+0

Я рекомендую вам распечатать рамку прокрутки до и после установки содержимого. И дайте мне знать результат. Наверное, я могу вам помочь по этому поводу –

+0

Я не понял – user2674668

+0

зарегистрировать фрейм для вашего scrollview –

ответ

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

Содержимое размер должен быть меньше, чем высота Scrollview только для горизонтальной прокрутки. Здесь ширина должна быть общей для всей ширины вашего изображения + заданного пространства. поэтому я бы сказал, что попробуйте использовать переменную Width, как это в вашем цикле for, и используйте этот размер Width для содержимого, чтобы он устанавливался в соответствии с общей шириной изображений.

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

Надеюсь, что это поможет!

+0

Не отображается imgView1 .. – user2674668

+0

см. Отредактированный ответ .. –

+0

Работает. Но scrollview, отображающий центр экрана – user2674668

0

Установите высоту Scrollview в качестве происхождения нижней кнопки,

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

Здесь я предполагаю, что ваша кнопка/вида снизу-х y в качестве 400. Вместо этого вы можете изменить по мере необходимости