Отключение вертикальной прокрутки в UIScrollView

В IB есть опция для отмены вертикальной прокрутки на scrollview, но она, похоже, не работает.

Как можно прокручивать прокрутку только по горизонтали, а не по вертикали в коде, а не в IB?

Ответ 1

Попробуйте настроить высоту contentSize на высоту scrollView. Тогда вертикальная прокрутка должна быть отключена, потому что не будет ничего, чтобы прокручивать по вертикали.

scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,scrollView.frame.size.height);

Ответ 2

так как iOS7:

сначала: ширина размера содержимого должна быть равна ширине вашего scrollview

second: в файле initWithNibName:

self.automaticallyAdjustsScrollViewInsets = NO;

Вот и все.

Ответ 3

да, ответ pt2ph8 правильный,

но если по какой-то странной причине ваш contentSize должен быть выше, чем UIScrollView, вы можете отключить вертикальную прокрутку, реализующую метод протокола UIScrollView

 -(void)scrollViewDidScroll:(UIScrollView *)aScrollView;

просто добавьте это в свой UIViewController

float oldY; // here or better in .h interface

- (void)scrollViewDidScroll:(UIScrollView *)aScrollView
{
    [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, oldY)];
    // or if you are sure you wanna it always on top:
    // [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, 0)];
}

это просто метод, вызываемый, когда пользователь прокручивает ваш UIScrollView и делает так, чтобы содержимое его всегда было одинаковым .y

Ответ 4

Включите следующий метод

-(void)viewDidLayoutSubviews{
    self.automaticallyAdjustsScrollViewInsets = NO;
}

и установите ширину размера содержимого прокрутки, равную ширине прокрутки.

Ответ 5

Я обновил размер содержимого, чтобы отключить вертикальную прокрутку, и возможность прокрутки все еще осталась. Затем я понял, что мне нужно отключить вертикальный отскок, чтобы полностью отключить свиток.

Возможно, есть и люди с этой проблемой.

Ответ 6

- (void)scrollViewDidScroll:(UIScrollView *)aScrollView
{
    [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x,0)];

}

вы должны подтвердить UIScrollViewDelegate

aScrollView.delegate = self;

Ответ 7

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

Чтобы отключить вертикальную прокрутку

scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,0);

Чтобы отключить горизонтальную прокрутку

scrollView.contentSize = CGSizeMake(0,scrollView.contentSize.height);

Ответ 8

Просто установите y всегда на вершине. Необходимо соответствовать UIScrollViewDelegate

func scrollViewDidScroll(scrollView: UIScrollView) {
        scrollView.contentOffset.y = 0.0
}

Это будет удерживать эффект замедления/ускорения прокрутки.