Как отключить горизонтальную прокрутку UIScrollView?

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

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

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

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

ОБНОВЛЕНО: (После того, как @EranMarom указал на его комментарий)

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

Остановка горизонтальной прокрутки:

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

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

Остановка вертикальной прокрутки:

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

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

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

поскольку использование 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]; 

Быстрое решение

Создайте две розетки: одну для вашего вида и одну для просмотра прокрутки:

 @IBOutlet weak var myView: UIView! @IBOutlet weak var scrollView: UIScrollView! 

Затем в вашем viewDidLayoutSubviews вы можете добавить следующий код:

 let scrollSize = CGSize(width: myView.frame.size.width, height: myView.frame.size.height) scrollView.contentSize = scrollSize 

Мы выполнили сборку высоты и ширины представления и установили размер содержимого scrollViews. Это приведет к прокрутке прокрутки по горизонтали.


Больше мыслей:

CGSizeMake использует ширину и высоту с помощью CGFloats. Возможно, вам придется использовать существующую высоту UIScrollViews для второго параметра. Что будет выглядеть так:

 let scrollSize = CGSize(width: myView.frame.size.width, height: scrollView.contentSize.height) 

Вы можете выбрать представление, затем в разделе Attributes Inspector снимите флажок User Interaction Enabled .

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

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

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

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

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

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

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

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

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

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

self.automaticallyAdjustsScrollViewInsets = NO;

  • Плохой URL-адрес при запросе с помощью NSURL
  • Что такое хорошо для?
  • На iPhone: узнать, какая песня сейчас играет? (в музыкальном проигрывателе iPod)
  • iphone facebook side menu с помощью объектива c
  • Автоматически запускать локальные уведомления ежедневно в динамическое время, заданное в массивах. objective ios
  • UITextView внутри UIScrollView с AutoLayout
  • Центральное содержимое UIScrollView при меньшем
  • Как установить получателей для UIActivityViewController в iOS 6?
  • Xcode - обновить текст метки ViewController с другого вида
  • Лучший способ заставить NSRunLoop ждать установки флага?
  • Как загрузить локальный html-файл в UIWebView
  • Interesting Posts

    Как мой компьютер был скомпрометирован?

    Исключить недопустимые символы XML в C #

    Как установить 32-разрядную версию Windows 7 в систему на основе UEFI?

    Как обратиться к ошибке «Получите минус один из чтения» при подключении к экземпляру Oracle Amazon RDS

    Как сделать полностью статически связанную .exe с Visual Studio Express 2005?

    изменение размеров массива в fortran

    Как я могу восстановить файлы, когда папка отображается пустым, но файлы не удаляются?

    Почему аргументы, не относящиеся к умолчанию, соответствуют аргументам по умолчанию?

    gcc-4.2 не удалось с кодом выхода 1 iphone

    Запуск запланированной задачи путем обнаружения соединения USB-устройства

    Как я могу узнать, что делает мой запрос на активные запросы?

    Float и двойной тип данных в Java

    IIS, Node.js и веб-приложение с IISNode не настроены правильно с помощью Virtual Directory

    Что означает квадратная скобка в приведенном ниже коде?

    Преобразование char в int в C #

    Давайте будем гением компьютера.