2013-03-19 2 views
0

Я следую этому замечательному небольшому учебнику о рисовании на экране в слое UIView (подкласс). http://spritebandits.wordpress.com/ Это просто работает.Рисование в экране с пальцем в UITableView

Есть только одна вещь. Я поместил это представление как подпункт UITableViewCell, который, естественно, отображается как часть UITableView. Думаю, у меня была бы такая же проблема, когда я поместил бы ее в UIScrollView. (UITableView наследует от UIScrollView в любом случае)

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

Есть ли какой-либо надлежащий способ остановить стол для контроля татуировки касаний, пока на самом деле на самом деле я нахожусь в моем взгляде?

Если это важно: я использую раскадровку. Ячейка является прототипом со своим собственным подклассом UITableViewCell.

ответ

0

У меня нет ответа на это. Но есть, по существу, работа.

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

как только пользователь сделали с рисунком, можно снова включить прокрутку.

Включение кнопки в любом месте экрана поможет вам переключать режимы.

+0

Спасибо. Технически это может сработать. Но это хороший пользовательский опыт? Так или иначе. Я мог бы попытаться отключить прокрутку, пока пользователь действительно что-то нарисовал. Но это не сработает, когда пользователь начнет рисовать в вертикальном направлении. –

1

Я реализовал это, используя тот же класс «Холст», который вы говорите, а также внутри UITableViewCell. Но я не использовал всю ячейку для рисования, а только UIView внутри UITableView в качестве подвью.

Я достиг всего пользовательского опыта, активируя и дезактивируя прокрутку UITableView, когда этот UIView (подзаголовок ячейки, где я разрешаю рисование), срабатывает touchBegan или touchEnded. Поэтому, когда они касаются/перемещаются внутри UIView, они рисуют. Когда он снаружи, они прокручиваются. Поэтому они не могут прокручивать UIView, потому что они будут рисовать.

Проблема в вашем случае состоит в том, что, поскольку вся ячейка является видом для рисования, пользователь не может прокручивать эту конкретную ячейку, потому что она является чертежной.

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

+0

Подводка Canvas - это только часть этой ячейки. В ячейке есть другие элементы и кнопки. На всех сторонах Canvas будет достаточно места для того, чтобы пользователь мог перетаскивать прокрутку таблицы. И я попробовал тот же трюк. Я проследил, когда прикасается Бэган. Он запускается только тогда, когда пользователь перемещается боком. Я не заметлю никакого движения с помощью компонентов вверх-вниз. Вы использовали трюк, чтобы обойти это? –

+0

Uhm .. одно, если вы нажмете на холсте, а затем переместите палец вверх и вниз, это прокрутка или рисование? (попробуйте медленно, сначала нажмите на холст, а затем проведите пальцем вверх или вниз) –

+0

Я просто попробовал. В touchBegan я сначала поднимаюсь вверх по цепочке супервизора, пока не нахожу UITableView и не устанавливаю scrollEnabled в NO. То же самое касается touchEnded: с YES. Итак, когда пользователь начинает рисовать по вертикали, он отлично работает. Пользователь может изменить направление и продолжить рисование.И когда пользователь начинает рисовать, но ждет момента после касания, прежде чем на самом деле переместить палец, тогда он отлично работает. Но когда пользователь начинает horzontal или диагональ или так, то таблица прокручивает. –

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