Вопрос по objective-c, xcode, iphone – Как отключить горизонтальную прокрутку UIScrollView?

79

у меня естьUIView как трамплин для iPhone. Я создал его с помощьюUIScrollView а такжеUIButtons, Я хочу отключить горизонтальную прокрутку для указанного вида прокрутки. Я хочу только вертикальную прокрутку. Как мне это сделать?

Отредактировал заголовок от имени автора. (Хотя в настоящее время он ожидает экспертной оценки, прежде чем редактирование станет видимым.) Duncan Babbage
@RahulVyas У человека выше есть точка. Изменение названия уменьшит путаницу для начинающих, которые попадают сюда через поисковую систему (например, я;)). SpacyRicochet
Вы должны изменить свой заголовок: вы спрашиваете о горизонтальной в вопросе и вертикальной в названии. Люди находят ваши вопросы позже в поисковых системах, так что это все еще имеет значение 2 года спустя Julien

Ваш Ответ

10   ответов
0

Как только я это сделал, заменив UIScrollView на UITableView только с 1 ячейкой, все заработало нормально.

Error: User Rate Limit Exceeded
4

Attributes Inspector снимите флажокUser Interaction Enabled .

0

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

Надеюсь, это поможет кому-то

0

Я установил contentInset tableview в viewDidLoad (как показано ниже), что вызвало горизонтальную прокрутку

self.tableView.contentInset = UIEdgeInsetsMake(0, 30, 0, 0);

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

0

Попробуй это:

CGSize scrollSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, scrollHeight);
[scrollView setContentSize: scrollSize];
117

Вы должны установитьcontentSize собственностьUIScrollView, Например, если вашUIScrollView имеет ширину 320 пикселей (ширину экрана), тогда вы можете сделать это:

CGSize scrollableSize = CGSizeMake(320, myScrollableHeight);
[myScrollView setContentSize:scrollableSize];

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

Используйте эту единственную строку.

self.automaticallyAdjustsScrollViewInsets = NO;

0

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

Однако в другом потоке (не уверен, где) кто-то предположил, что использование отрицательного ограничения на UIScrollView сработало для него.

Поэтому я попробовал различные комбинации ограничений с противоречивыми результатами. В конечном итоге мне удалось добавить начальные и конечные ограничения -32 в представление прокрутки и добавить (невидимое) текстовое представление шириной 320 (и по центру).

10

начиная с iOS7

self.automaticallyAdjustsScrollViewInsets = NO;

// и создаем свой скроллер с 3 страницами

    self.pageView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    [self.pageView setContentSize:CGSizeMake(self.view.frame.size.width*3, self.view.frame.size.height)];
    [self.pageView setShowsVerticalScrollIndicator:NO];
    [self.pageView setPagingEnabled:YES];
    [self.view addSubview:self.pageView];
self.collectionView.pagingEnabled = YES;Error: User Rate Limit ExceededscrollViewWillEndDragging:Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
83

UPDATED: (После того, как @EranMarom указал на его комментарий)

Вы можетеstop horizontal scrolling or vertical scrolling вScrollViewDelegate Метод. Вот как

Stops Horizontal Scrolling:

Если вы хотите прокрутить горизонтально, то вам нужно увеличить contentOffset.x. Предотвращение, которое останавливает прокрутку прокрутки в горизонтальном направлении.

- (void)scrollViewDidScroll:(UIScrollView *)sender {
    sender.contentOffset.x = 0.0
}

Stops Vertical Scrolling:

Если вы хотите прокрутить по вертикали, то вам нужно увеличить contentOffset.y. Предотвращение, которое останавливает прокрутку прокрутки в вертикальном направлении.

- (void)scrollViewDidScroll:(UIScrollView *)sender {
    sender.contentOffset.y = 0.0
}

Выше код предотвращает изменения вx а такжеy изscrollview contentOffset и это приводит к остановке прокрутки вscrollViewDidScroll: метод.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededscrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y);Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededscrollView.contentOffset.y = 0.0Error: User Rate Limit ExceededscrollView.contentOffset.x = 0.0Error: User Rate Limit ExceededscrollViewDidScroll()Error: User Rate Limit ExceededscrollView.contentSizeError: User Rate Limit ExceededscrollView.frame.sizeError: User Rate Limit Exceeded

Похожие вопросы