2013-07-23 1 views
0

Так что я так долго боролся с этой проблемой, я считаю, что я пробовал все доступные решения StackOverflow, но все же я не могу понять это правильно.iOS: надлежащим образом передайте правильные события через scrollview

У меня есть «занавес View», лежащий на любой другой точки зрения в моем приложении социальной сети

Вот как это выглядит, когда занавес в по умолчанию режиме This is how it looks when the curtain is in default-mode

Это как это выглядит, когда занавес в «вниз» -Режим This is how it looks when the curtain is in "down"-mode

занавес вид, который содержится в представлении прокрутки.

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

Размер контента что-то вроде черной поглаженной области в фото ниже.

enter image description here

Моя проблема. Я не могу понять, как я могу сделать свои зеленые кнопки «Follow, Everybody, Near» clickable/touchable, когда scrollview находится в режиме по умолчанию. Очевидно, что размер содержимого scrollview накладывается на кнопки, но как я могу избежать этого?

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

Я реализовал представление занавеса с помощью настраиваемого контроллера представлений, содержащего прокрутку. Это представление затем добавляется в корневой вид.

+0

Вы пробовали '[self.view bringSubviewToFront: yourButton]' –

+1

Вы уверены, что вам нужно просмотреть прокрутку? Простой салфеткой не работает? – johnyu

+0

Да, мне нужен scrollview, конечно же распознаватель жестов будет работать, но я хочу, чтобы он был прокручиваемым. Благодарю. – Eyeball

ответ

1

Вы должны скрыть ваш UIScrollView, когда он находится в положении по умолчанию:

scrollView.hidden = YES; 

Это предотвратит UIScrollView от блокировки штрихи на кнопки под ним.

См Apple's UIView doco:

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

Затем установите скрытое значение NO перед перетаскиванием занавеса.

EDIT:

Чтобы ответить на вопросы в своем комментарии:

  1. Как я узнаю, что мой вид прокрутки находится в положении по умолчанию, не срабатывает ни одно событие? Вы должны быть в состоянии определить, находится ли ваш вид прокрутки в по умолчанию (скрытом) положении или в нижнем положении (показывается), проверив свойство contentOffset в вашем представлении прокрутки.

  2. Не исчезнет ли изображение занавеса, если я его скрою? Да, было бы. Если вы хотите, чтобы представление по-прежнему показывалось сверху, а не полностью исчезло, вам понадобится другой подход (см. Некоторые рекомендации ниже).

  3. Предполагается, что вид прокрутки «перетаскивается» пальцем (конечно). Поэтому ему нужны события, запускающие все время. Вы можете обнаружить жест касания/панорамирования на главном экране, и заставить scrollview двигаться вниз/вверх на основе этого жеста. Жест не нужно начинать внутри прокрутки.

Вот некоторые ссылки, которые я нашел полезным:

Надеюсь, это поможет!

+0

Спасибо, 1. Как я узнаю, если мой профиль прокрутки находится в позиции по умолчанию, нет события, вызванного событием? 2. Не исчезнет ли изображение занавеса, если я его скрою? 3. Предполагается, что вид прокрутки «перетаскивается» пальцем (конечно). Поэтому ему нужны события, запускающие все время. – Eyeball

+0

@Eyeball Посмотрите мои изменения выше. –

+0

Немного поздно, но я пошел со вторым точечным ответом =) – Eyeball

Смежные вопросы