2010-07-09 2 views
0

У меня есть подкласс UIViewController, у которого свойство вида установлено в подкласс UIScrollView (скажем, ProfileScrollView). Теперь у меня есть переопределенный метод drawRect:, в котором я рисую много текста и размещаю UIButtons как субвью между текстами. В зависимости от текстовых данных я устанавливаю contentSize элемента scrollView в этом методе drawRect :. Теперь, когда я просматриваю этот вид, кнопки прокручиваются, но текст остается застойным. Пожалуйста, помогите с этой проблемой. СпасибоUIScrollView прокрутка не соответствует

ответ

1

Я думаю, что ваша проблема связана с тем, что вы используете drawRect: для вашего текста. Я уверен, что позиционирование, заданное аргументом CGRect, является абсолютным и не зависит от текущего смещения содержимого scrollView.

Вы добавили свои подпрограммы (кнопки и текст) непосредственно в UIScrollView? Если вы это сделали, попробуйте вставить простой UIView в UIScrollView, который будет содержать все подпункты. Должно быть что-то вроде этого:

-> UIScrollView 
    -> UIView 
     -> UIButtons 
     -> Text 
     -> ... 

Так drawInRect: нарисует текст, содержащий UIView с абсолютным позиционированием, и UIScrollView сделает UIView (и, следовательно, все его содержимое) прокрутки.

+0

Спасибо за ответ. Я думаю, это необходимое решение. Но почему он не прокручивает текст, поскольку у меня есть overriden drawRect: scrollView? – Nishit

+0

Пробовал ли это, и эффективно ли он работал? Потому что у меня были некоторые сомнения после публикации моего ответа. Но я думаю, причина в том, что вы рисуете свой текст с помощью drawInRect или Nintendo NSString, которые помещают текст в абсолютную позицию. UIButton (и другие UIView) размещены относительно их супервизора, поэтому UIScrollView может изменить свое позиционирование в соответствии с тем, где прокручивается пользователь. – Jukurrpa

+0

Да, ваше решение сработало. Однако, что касается моего предыдущего подхода, я поставил точку останова внутри drawRect: и когда я прокручивал scrollView, drawRect: не вызывался. Таким образом, это означает, что он не рисовал строку снова и снова в одной и той же абсолютной точке, а скорее рисовал ее в постоянном виде (не scrollView). – Nishit

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