2013-12-19 7 views
0

Я пытаюсь создать несколько UIScrollViews в одном представлении, которые прокручиваются по горизонтали в iOS. Это мой код до сих пор:UIScrollView не прокрутка iOS

-(void)updateSection { 
    [feedLoadingActInd stopAnimating]; 
    feedLoadingActInd.hidden = YES; 
    builder = [NSMutableArray array]; 
    float xPosition = 0; 
    float xPosBut = 0; 

    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 400, self.frame.size.width, self.frame.size.height - 29)]; 
    [scrollView setScrollEnabled:YES]; 
    scrollView.backgroundColor = [UIColor yellowColor]; 

    scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    scrollView.pagingEnabled = YES; 
    scrollView.delegate = self; 

    for (int i = 0; i < itemArticleArray.count; i++) { 
     testButton = [[UIButton alloc] initWithFrame:CGRectMake(xPosBut, 40, 40, 40)]; 
     [testButton setTitleColor:[UIColor greenColor] forState:UIControlStateNormal]; 
     [testButton setTitle:@"Test" forState:UIControlStateNormal]; 
     [testButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 
     testButton.backgroundColor = [UIColor blueColor]; 
     xPosBut += testButton.frame.size.width; 
     NSLog(@"scroll.frame.size.width = %f", scrollView.frame.size.width); 

     xPosition += 2; 
     UIView *seperatorView = [[UIView alloc] initWithFrame:CGRectMake(xPosition, 4, 350, scrollView.frame.size.height - 8)]; 
     seperatorView.backgroundColor = [UIColor redColor]; 
     [scrollView addSubview:seperatorView]; 
     xPosition += 350; 

     [seperatorView addSubview:testButton]; 
     [scrollView addSubview:seperatorView]; 
     [builder addObject:testButton]; 

    } 
    [self addSubview:scrollView]; 
    [scrollView setUserInteractionEnabled:YES]; 
    [scrollView setContentSize: CGSizeMake(xPosition, scrollView.frame.size.height)]; 

    NSLog(@"scroll.contentsize.width = %f", scrollView.contentSize.width); 

}

Однако, ни один из видов прокрутки на самом деле прокрутки, которые я смущен о, так как есть несколько кнопок добавляются. Кроме того, кнопки, которые я добавил, на самом деле ничего не делают, когда я их нажимаю. Они должны запускать метод buttonPressed, и это не так?

Любая помощь была бы высоко оценена!

+0

Вы устанавливаете свой размер содержимого прокрутки равным кадру, поэтому компонент не будет прокручиваться. Для прокрутки scroll.contentSize.y> scroll.frame.height –

+0

[scrollView setContentSize: CGSizeMake (xPosition, 700)]; или вы просто с высотой сгенерированными кнопками высоты –

+0

Сделали небольшую ошибку, и мне это нужно прокрутка по горизонтали не вертикально –

ответ

3

попробовать это,

float xPosition = 0; 
    float xPosBut = 0; 

    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 100,self.view.frame.size.width, self.view.frame.size.height - 29)]; 
    [scrollView setScrollEnabled:YES]; 

    scrollView.backgroundColor = [UIColor yellowColor]; 

    for (int i = 0; i < 10; i++) { 
     UIButton *testButton = [[UIButton alloc] initWithFrame:CGRectMake(xPosition, 10, scrollView.frame.size.width, 50)]; 
     [testButton setTitleColor:[UIColor greenColor] forState:UIControlStateNormal]; 
     [testButton setTitle:@"Test" forState:UIControlStateNormal]; 
     [testButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 
     testButton.backgroundColor = [UIColor blueColor]; 
     xPosition += testButton.frame.size.width; 
     NSLog(@"xposbut = %f", xPosBut); 
     NSLog(@"scroll.frame.size.width = %f", scrollView.frame.size.width); 

     xPosition += scrollView.frame.size.width+2; 
     UIView *seperatorView = [[UIView alloc] initWithFrame:CGRectMake(xPosition, 4, 2, scrollView.frame.size.height - 8)]; 
     seperatorView.backgroundColor = [UIColor redColor]; 
     [scrollView addSubview:seperatorView]; 
     xPosition +=scrollView.frame.size.width+ 4; 

     [self.view addSubview:scrollView]; 
     [scrollView addSubview:seperatorView]; 
     [scrollView addSubview:testButton]; 
     [builder addObject:testButton]; 

    } 
    [scrollView setContentSize: CGSizeMake(xPosition, scrollView.frame.size.height)]; 
    [self.view addSubview:scrollView]; 

установить для состояния контура части согласно вашему требованию. надеюсь, что это вам поможет.

+0

Thankyou так много! –

+0

Если я изменю строку кода, которая говорит 'scrollView = [[UIScrollView alloc] initWithFrame: CGRectMake (0, 100, self.view.frame.size.width, self.view.frame.size.height - 29)]; 'to this:' scrollView = [[UIScrollView alloc] initWithFrame: CGRectMake (0, 400, self.frame.size.width, self.frame.size.height - 29)]; ' Тогда это не позволяет мне прокручивать или нажмите кнопку? –

Смежные вопросы