UIScrollView отключить верхний отказов - PullRequest
1 голос
/ 29 января 2020

У меня есть ViewController, который содержит UIScrollView, и я пытаюсь отключить эффект отскока только в верхней части представления.

Я пытался добавить этот ответ в моем ViewController класс, который говорит это сделать:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    //disable bounce only at the top of the screen
    scrollView.bounces = scrollView.contentOffset.y > 100
}

Но я не совсем понимаю, что с этим делать. Я также попытался реализовать UIScrollViewDelegate.

Ничего из того, что я пробовал, не сработало.

Вот мои StoryBoard и ViewController

Что мне нужно сделать в Чтобы заставить его работать?

Моя настройка:

  • Версия Swift: 5.1.3
  • Версия Xcode: 11.3.1
  • Цель * Версия 1029 *: 13,2
  • MacBook Pro (13 дюймов, 2016 г., с четырьмя портами Thunderbolt 3) MacOS Catalina 10.15.2 (19C57)

Ответы [ 4 ]

3 голосов
/ 29 января 2020

Если вы хотите отключить отскоки scrollview, вы можете взять выход вашего scrollview и установить для свойства отказов значение false в viewdidload, как показано ниже,

yourScrollView.bounces = false

или вы можете снимите также отказов с раскадровки!

3 голосов
/ 29 января 2020

Подключите розетку scrollView и попробуйте добавить scrollView.delegate = self или добавить scrollView.bounces = scrollView.contentOffset.y > 100 в вашу функцию viewDidLoad().

0 голосов
/ 29 января 2020

Хорошо, вот ответ на мою проблему:

  • В viewController добавьте выход ScrollView
  • В функцию viewDidLoad() добавьте это myScrollView.delegate = self
  • Заставьте ваш viewController реализовать UIScrollViewDelegate: class MyViewController: UIViewController, UIScrollViewDelegate { ...
  • Затем добавьте следующую функцию:

    fun c scrollViewDidScroll (scrollView: UIScrollView) { myScrollView.bounces = myScrollView.contentOffset.y> 100}

0 голосов
/ 29 января 2020

попробуйте это

func scrollViewDidScroll(scrollView: UIScrollView) {
      if scrollView.contentOffset.y < 0 {
          scrollView.contentOffset.y = 0
      }
  }
...