Ошибка: взаимодействие с пользователем отключено в нижних частях UIScrollView

У меня есть средство просмотра документов, в котором есть один UIView (страница) в качестве подпредставления «scrolledView» (UIView) UIScrollView. На странице есть больше подпредставлений, например, UIButtons и UITextFields.

Пользователь может вручную панорамировать и масштабировать прокрутку, но для некоторых функций я выполняю программную прокрутку/панорамирование, чтобы отобразить текстовые поля или кнопки.

В некоторых случаях мне нужно программно настроить contentSize для представления прокрутки и рамки прокручиваемого представления (чтобы убедиться, что текстовые поля в нижней части страницы можно перемещать над клавиатурой).

Также (я думаю) я правильно масштабирую координаты для contentSize и кадра прокручиваемого представления с помощью zoomScale прокрутки.

Обычно все работает как надо.

Это проблема:

В некоторых редких случаях, после того как я вызывал уменьшение масштаба, нажимая «Далее» на клавиатуре, кнопки и текстовые поля в нижней части страницы больше не реагировали на мои прикосновения. (Обычно это самые низкие 10% или около того.) Те, кто выше, поступают так, как должны.

Может ли кто-нибудь дать мне какие-либо намеки, что искать?

Я видел это на iOS 7 и iOS 8, более старых версий я не знаю.


person flo von der uni    schedule 25.11.2014    source источник
comment
Есть ли у вас какие-либо четкие представления, которые могут быть поверх этой части содержимого прокрутки?   -  person Rayfleck    schedule 25.11.2014
comment
@Rayfleck Нет, но это действительно могло вызвать такое поведение, я согласен.   -  person flo von der uni    schedule 25.11.2014
comment
Если вы используете Xcode 6, используйте отладчик представления, чтобы проверить, что на самом деле происходит.   -  person chriszumberge    schedule 25.11.2014
comment
@chriszumberge Спасибо за совет, я не знал об этой функции, но, похоже, в иерархии представлений все было в порядке.   -  person flo von der uni    schedule 28.11.2014


Ответы (3)


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

Кажется, что взаимодействие с пользователем разрешено только для указанной высоты кадра. Итак, я решил это, увеличив высоту frame, которая встроена под scrollview.

person Jay    schedule 02.09.2016

Кажется, некоторые проблемы были вызваны перенастройкой contentSize и рамки прокручиваемого представления внутри - (void)scrollViewDidZoom:(UIScrollView *)scrollView Затем другие части изменили те же свойства, например, в блоках завершения анимации, и возможно, что значения оказались неправильными.

(Я использовал трюк, чтобы сохранить содержимое по центру, когда пользователь уменьшил масштаб. Теперь я получаю тот же эффект, используя свойство contentInset)

person flo von der uni    schedule 28.11.2014

Если ваш collectionView находится за пределами scrollView contentSize, вы должны перетащить ограничение из построителя интерфейса, и когда вы изменяете положение collectionView, вы также должны изменить константу ограничения. Это сработало для меня

person Ruslan    schedule 28.05.2018