Переключатель управления UITouch от touchesBegan к UIScrollViewDelegate

голоса
0

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

Схема приложения заключается в следующем один.

MainUiView-> UIScrollView-> UIImageView

Пальцы рисования и отслеживания управляется на touchesBegan, touchesMoved, touchesEndedпереопределение UIResponder.

Увеличение и панорамирование UIImageViewуправляются UIScrollViewDelegateреализацией.

У меня есть кнопка, которая переключает режим приложения от чертежа до масштабирования и режима панорамирования следующего образом:

если вы хотите сделать:

    [scrollView setUserInteractionEnabled:NO];
    [imageView setUserInteractionEnabled:YES];

так прикасается управляются в touchesBegan, touchesMoved, touchesEndedметоды.

если вы хотите, чтобы панорамирование и масштабирование двумя пальцами с помощью Pinch Увеличить жест

[scrollView setUserInteractionEnabled:YES]; 
[imageView setUserInteractionEnabled:NO];

так что два пальца жест управляется UIScrollViewDelegate

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

Моя идея состояла в том, чтобы отслеживать наличие двух пальцев в , touchesBeganа затем отключить взаимодействие с пользователем в UIImageViewдля того, чтобы взаимодействие с пользователем в Scrollview, но проблема заключается в том , что после выполнения этого прикосновения по - прежнему осуществляется в touchesMovedметоде, ничего не приходит к scrollViewDelegateпока не поднимите пальцы от экрана, после чего, если я снова выбивать пальцы на экране все управляется scrollViewDelegate.

Так , чтобы подвести итог: можно ли остановить цикл прикасается после touchesBeganи распространять его на ScrollViewDelegate?

Если это не представляется возможным, как я могу добиться увеличения, панорамирования и рисования функции на UImageView? Должен ли я удалить Scrollview и попытаться увеличить и панорамировать UImageViewчерез UIResponderметоды?

Спасибо за помощь

Задан 19/09/2018 в 13:34
источник пользователем
На других языках...                            


1 ответов

голоса
0

Попробуйте изменить реализацию использовать жест recognisers вместо обработки сенсорного использования методов UIResponder. Основные преимущества этого подхода являются:

  • Вы можете использовать UIPanGestureRecognizer для рисования , или даже создать собственные распознавани
  • Вы можете иметь отношения зависимости между recognisers, используя requireGestureRecognizerToFail , даже через просмотры
  • Вы можете перебрать все recognisers на вид и отключить только конкретный набор жестов, не отключая штрихи на весь взгляд
  • Жест recognisers имеет то же сенсорное связанные методы, которые вы можете использовать для перемещения сенсорного кода обработки от текущей реализации к жестам

Таким образом, ваш взгляд изображение будет иметь либо пан или ваш собственный жест распознавани, с одним нажатием кнопки, для рисования, и вы можете перебрать recognisers Scrollview, и отметьте их не срабатывать , если «рисовать» жест срабатывает, используя requireGestureRecognizerToFail.

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

Счастливое кодирование :)

Ответил 19/09/2018 в 14:05
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more