2010-09-30 2 views
8

Я ищу лучший способ для обнаружения более одного пальца на экране во время. Я не обнаруживаю кранов или зажиманий, просто факт, что происходит более одного прикосновения. Кажется, для этого нет никаких распознавателей жестов. Каков наилучший способ?iOS - обнаружение, когда на экране отображается более одного пальца.

+0

Это для любого места на экране или на определенном виде? –

ответ

13

В touchsBegan, touchsMoved и touchesEnded методы, один параметр - событие, являющееся объектом UIEvent. Количество пальцев на экране - [[event allTouches] count].

[РЕДАКТИРОВАНИЕ потому что Джош Хинман отметил, что у меня было не так раньше -. Мое предыдущее предложение использовать [число касаний] от параметра касаний в тех же методах не будет работать]

+3

Я не думаю, что это надежно даст вам общее количество касаний на экране; только количество касаний, которые обновляются. Другими словами, если у меня есть три пальца на экране, и я перемещаю один палец, сохраняя остальные два неподвижных, а затем прикасается к Mixed: будет вызываться с NSSet одним касанием (тот, который я переместил). –

0

One/Multi touch прозрачный для вас - вы просто получаете уведомления о том, что прикосновение было запущено/перемещено/закончено/использовано. Если одновременно возникают два касания, вы получите уведомления обоим.

Я не знаю какой-либо встроенной функции, которая определяет, будут ли появляться сенсорные последовательности, состоящие из щепотки. Но вы можете взглянуть на образец кода «прикосновений» от Apple для вдохновения.

https://developer.apple.com/library/ios/#samplecode/Touches/

3

Читайте по методу -touchesBegan:withEvent:. Это точка входа в обработку событий с несколькими касаниями.

Вот Lib ссылка разработчика на мультитач событиях: https://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MultitouchEvents/MultitouchEvents.html

+0

Я пробовал это в контроллере вида, но он никогда не набирается: - (void) touchhesBegan: (NSSet *) затрагивает событиеEvent: (UIEvent *) { \t NSLog (@ "num touches:% d", [касается число]); } – sol

0

Вы можете попробовать использовать класс UITapGestureRecognizer и установите numberOfTouchesRequired свойство 2.

Обратите внимание, что это будет работать только если multipleTouchEnabled установлен в ДА на вид.

0
  • (аннулируется) touchesBegan: (NSSet *) касается событияEvent: (UIEvent *) {

    NSLog (@ "% lu", [[event allTouches] count]); }

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