UIScrollView подкачки только для горизонтального, но не вертикального? - PullRequest
4 голосов
/ 13 января 2010

Я возился с UIScrollView. По сути, я поместил в него 7 представлений, которые все выше, чем contentSize. Я установил для пейджинга «Да», и он отлично работает по горизонтали. Неожиданным побочным эффектом, однако, было то, что он также включил подкачку по вертикали Мои высокие взгляды останавливаются кратными высоте contentSize. Я бы хотел, чтобы он нормально прокручивался по вертикали и располагался по горизонтали. Возможно ли это?

Спасибо

Ответы [ 3 ]

1 голос
/ 18 июня 2011

Режим прокрутки разрешит прокрутку, только если contentSize в одном измерении не равен размеру кадра в том же измерении.Также размер должен быть четным.

Так что в вашем примере убедитесь, что вы правильно установили contentSize, чтобы сделать высоту кадра.Это предотвратит вертикальную прокрутку независимо от того, какое содержимое у вас есть в представлении прокрутки.

1 голос
/ 13 января 2010

Не AFAIK. Вы должны создать подкласс UIScrollView, как описано в документации:

Подклассы могут переопределять методы touchesShouldBegin: withEvent: inContentView :, pagingEnabled и touchesShouldCancelInContentView: (которые вызываются видом прокрутки), чтобы влиять на то, как представление прокрутки обрабатывает жесты прокрутки.

0 голосов
/ 11 апреля 2012

"Кокоанетика" права. попробуйте этот код.

 

uiScollView  *view = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 360, 340)];<br/>

view.scrollEnabled = YES;<br/>

    view.pagingEnabled=YES;<br/>
  int y=20;<br/>
    for (int i=0; i
        UIButton *btn=[UIButton buttonWithType:UIButtonTyperoundRect];<br/>

       [btn setTitle:[NSString stringwithFormate:@"%d",i] forState:UIControlStateNormal]; <br/>
        int x=0; <br/>
        if (i%2==0) { <br/>
            x=20; <br/>
        }<br/>
        else{<br/>
            x=190;<br/>
        }
<br/>
        [btn setFrame:CGRectMake(x, y,170*0.8,170*0.8)]; <br/>
        btn.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;<br/>
        btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;<br/>
        if (i%2==1) {<br/>
            y=y+170;<br/>
        }

        [btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; <br/>
        btn.tag=i; <br/>
        [view addSubview:btn];<br/>
    }<br/>

    [view setContentSize:CGSizeMake(360, y+150)]; <br/>
    [view scrollRectToVisible:CGRectMake(0, 0, 360, 340) animated:YES]; <br/>
    view.scrollEnabled=TRUE; <br/>

    self.view = view; <br/>
    self.view.backgroundColor = [UIColor clearColor]; <br/>

    [view release]; <br/>
  


это работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...