2016-10-15 5 views
-1

У меня возникла неприятная проблема. У меня есть подклассы UIViewController и я проверяю события касания с обычными методами -(void)touchesBegan и -(void)touchesMoved .... Независимо от того, что я пытаюсь, они призваны только к первому прикосновению, остальные полностью игнорируются. Я знаю, что эта проблема уже решена здесь:TouchesBegan только называется один раз

Why are UIViewController touchesBegan, touchesMoved & touchesEnded only being called when the first of two touches begins, moves or ends?

Однако решение здесь не работает для меня. Я установил multipleTouchEnabled на YES на каждое представление, и я установил userInteractionEnabled на NO на каждый подъярус, но на главный вид контроллера вида, который я подклассифицировал.

+0

Почему вы не применили методы 'touchhes' на _view_? – matt

+0

@matt Я уже пробовал это, создав еще один подкласс и все, то же самое произошло :( –

+0

Ну, я заверяю вас, что на каждом пальце есть «touchhesBegan» - палец _is_ a touch. Можете ли вы уменьшить проблему до небольшой проект и опубликуйте его? Я буду рад посмотреть на него и рассказать вам, что вы делаете неправильно. Существует слишком много способов для неправильной настройки вещей. – matt

ответ

-1

Thank you @matt за идею. Я попробовал его в пустом проекте, и методы все еще вызывались только один раз. Затем я проверил массив touches, возможно, он вызывался один раз с несколькими касаниями (я был на симуляторе). Затем я проверил event.allTouches и вуаля, было два касания. Глупый из меня, чтобы попробовать это на симуляторе, но и глупо из яблока, чтобы вызвать touchesBegan один раз, массив touches, содержащий только один элемент.

+0

Нет, здесь нет ничего «глупого». Вы просто не совсем понимаете, как прикасаются работы. Я объяснил в своем ответе, и я Надеюсь, что это поможет! – matt

1

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

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

Итак, сделайте вид, что у вас есть только один вид, и что события touches реализованы в этом представлении. Затем каждый палец, который спускается по экрану , будет позвонить по телефону touchesBeganраз. Но если Finger 1 был уже вниз на экране, когда Finger 2 опустился, очевидно, Finger 1 не начинался сейчас; что уже произошло. Итак, этот звонок в touchesBegan будет содержать в своем touches набор только Finger 2, потому что это тот палец, который начался именно сейчас. Если Finger 1 также все еще опускается, он будет сообщен вторично среди событий, но это не его событие, поэтому оно не будет в наборе touches.

+0

Это может помочь вам прочитать мою книгу: http://www.apeth.com/iOSBook/ch18.html – matt

+0

Спасибо, моя проблема заключалась в том, что iOS simulator ac называемый метод touchBegan только один раз для двух одновременных касаний, потому что он запускается точно в одно и то же время. –

+0

Да, тестирование нескольких пальцев на симуляторе - это очень искусственное упражнение, потому что это искусственные пальцы. :) – matt

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

  • Нет связанных вопросов^_^