2010-03-04 3 views
4

У меня есть иерархия, где UIScrollviews существуют внутри друг друга.UIScrollView в UIScrollView

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

ответ

2

Если вы настроили UIScrollViews только прокручиваемыми на одной оси или другой (т. Е. Соответствующим образом установите для них свойство contentSize. Чтобы иметь возможность прокручивать только вертикально, установите его значение contentSize.width равным его bounds.size.width). то они должны просто работать, считая, что на одной оси не прокручиваются два вида. Как правило, вы будете иметь «дочерние» виды прокрутки по вертикали, а родительский вид прокручивается по горизонтали.

+0

Главное UIScrollView должно быть прокручиваемым во всех направлениях, поскольку оно масштабируется. – Jean

1

Если это вообще возможно, вы должны перепроектировать, чтобы этого избежать. Safari обрабатывает такую ​​ситуацию, то есть iframes и textareas, имея встроенный просмотр прокрутки двумя пальцами. Это не очень легко обнаружить, но это лучше, чем альтернатива, которая будет еще более неприятной. Если встроенный просмотр был едва экранизирован, попытка прокрутки внешнего вида могла вместо этого прокрутить внутренний вид, но не отображать много чего-либо; он просто выглядит невосприимчивым.

Если вы все еще хотите это сделать, попробуйте установить внешний вид прокрутки canCancelContentTouches на номер NO. Это должно препятствовать прокрутке внешнего вида, когда во внутреннем виде начинается касание. Получение прокрутки с двумя пальцами в стиле Safari, вероятно, связано с подклассификацией UIScrollView и внедрением метода -touchesShouldBegin:withEvent:inContentView:.

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