В IB есть опция для отмены вертикальной прокрутки на scrollview, но она, похоже, не работает.
Как можно прокручивать прокрутку только по горизонтали, а не по вертикали в коде, а не в IB?
В IB есть опция для отмены вертикальной прокрутки на scrollview, но она, похоже, не работает.
Как можно прокручивать прокрутку только по горизонтали, а не по вертикали в коде, а не в IB?
Попробуйте настроить высоту contentSize на высоту scrollView. Тогда вертикальная прокрутка должна быть отключена, потому что не будет ничего, чтобы прокручивать по вертикали.
scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,scrollView.frame.size.height);
так как iOS7:
сначала: ширина размера содержимого должна быть равна ширине вашего scrollview
second: в файле initWithNibName:
self.automaticallyAdjustsScrollViewInsets = NO;
Вот и все.
да, ответ 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
Включите следующий метод
-(void)viewDidLayoutSubviews{
self.automaticallyAdjustsScrollViewInsets = NO;
}
и установите ширину размера содержимого прокрутки, равную ширине прокрутки.
Я обновил размер содержимого, чтобы отключить вертикальную прокрутку, и возможность прокрутки все еще осталась. Затем я понял, что мне нужно отключить вертикальный отскок, чтобы полностью отключить свиток.
Возможно, есть и люди с этой проблемой.
- (void)scrollViewDidScroll:(UIScrollView *)aScrollView
{
[aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x,0)];
}
вы должны подтвердить UIScrollViewDelegate
aScrollView.delegate = self;
Вам нужно передать 0 в размере содержимого, чтобы отключить его в нужном направлении.
Чтобы отключить вертикальную прокрутку
scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,0);
Чтобы отключить горизонтальную прокрутку
scrollView.contentSize = CGSizeMake(0,scrollView.contentSize.height);
Просто установите y всегда на вершине. Необходимо соответствовать UIScrollViewDelegate
func scrollViewDidScroll(scrollView: UIScrollView) {
scrollView.contentOffset.y = 0.0
}
Это будет удерживать эффект замедления/ускорения прокрутки.