it-swarm.com.ru

UIB-кнопки внизу UIScrollView не работают

Я создал UIScrollView в своих раскадровках и добавил 12 UIButton в представление контейнера, которое находится внутри UIScrollView.

при работе на симуляторе iPhone 5s на экране видны 9 кнопок, остальные кнопки видны только при прокрутке вниз.

с 9 кнопками, которые изначально можно увидеть на экране, можно взаимодействовать. Однако с 3 кнопками внизу вида прокрутки (которые нужно прокрутить, чтобы их было видно) нельзя взаимодействовать.

Я запустил приложение на симуляторе iPhone 6, который отображает все 12 кнопок на экране без необходимости прокрутки, а нижние 3 кнопки работают.

Я использую autolayout.

Я попытался возиться с contentSize UIScrollView, и это не помогает. 

16
Wesley Ow

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

Если кнопка находится за пределами контейнера, она все равно будет отображаться. Тем не менее, он не может реагировать на любое сенсорное событие.

34
skyline75489

при использовании scrollview в раскадровке с autolayout. обычно он настраивается с использованием представления содержимого внутри прокрутки, которое будет содержать все другие представления (например, кнопки, метки и т. д.), представление содержимого обычно имеет одинаковую высоту и равную ширину. 

чтобы ваш контентный вид увеличивал свою высоту, вам нужно добавить ограничение высоты, а затем назначить его для выхода, чтобы вы могли легко манипулировать его значением в вашем коде. затем установите приоритет ограничения высоты представления содержимого на 1000 («требуется») и установите приоритет ограничения «равной ширины: вид» представления содержимого на 750 (высокий).

4
vinceville

Для меня все это было просто снять флажок и установить флажок Adjust Scroll View Insets в раскадровке этого ViewController.

 enter image description here

PS: Приведенные выше ответы не сработали для меня.

3
Vigneshwaran.m

Другой вариант - уменьшить приоритет ограничения Content View.Center Y.

В Xcode 9 я выложил contentView по мере необходимости и кнопку, расположенную ниже представления на iPhone 5. Я динамически изменил размеры scrollView.contentSize.height и contentView.frame в контроллере представления. ScrollView прокручивал для меня, но я все еще не мог выбрать кнопку и видел предупреждения в раскадровке.

После того как я снизил приоритет ограничения выравнивания по центру Y для contentView, предупреждения в раскадровке исчезли, и я смог прокрутить до конца scrollView и выбрать кнопку на имитаторе iPhone 5.

 enter image description here

ПРИМЕЧАНИЕ. Я все еще проверяю размер устройства и изменяю размер scrollView.contentSize.height в viewWillLayoutSubviews () для небольших устройств.

override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        scrollView.contentSize.height = (UIDevice.current.isSmallDevice) ? 560 : contentView.frame.size.height
    }

(UIDevice.current.isSmallDevice - это вызов расширения UIDevice, которое возвращает логическое значение, определяемое размером экрана)

1
B-Rad

Добавить все подпредставления из контейнера в ScrollView. И спрятать контейнер. Убедитесь, что контейнер (ContainerView scrollView) также должен быть подвидом scrollView.

0
Jeet