Как обнаружить два нажатия пальца на iPhone? - PullRequest
6 голосов
/ 25 апреля 2010

Как обнаружить касание двумя пальцами на iPhone?

Ответы [ 4 ]

12 голосов
/ 25 апреля 2010

Если вы можете использовать OS 3.2 или выше, вы можете использовать UITapGestureRecognizer. Это действительно удобно: просто настройте его и прикрепите к представлению. Когда жест выполняется, он запускает действие цели gestRecognizer.

Пример:

UITapGestureRecognizer * r = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewWasDoubleTapped:)];
[r setNumberOfTapsRequired:2];
[[self view] addGestureRecognizer:r];
[r release];

Тогда вы просто реализуете метод - (void) viewWasDoubleTapped:(id)sender, и он будет вызван, когда [self view] будет удвоено.

EDIT

Я только что понял, что вы можете говорить об обнаружении одного касания двумя пальцами. Если это так, вы можете сделать

[r setNumberOfTouchesRequired:2]
.

Основным преимуществом этого подхода является то, что вам не нужно создавать подкласс настраиваемого представления

4 голосов
/ 25 апреля 2010

Если вы не нацеливаетесь на 3.2 +:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    if ([touches count] == 2) {
        //etc
    }
}
2 голосов
/ 25 апреля 2010

Установите для свойства multiTouchEnabled значение YES.

0 голосов
/ 25 апреля 2010

Если ваши требования позволяют, используйте UITapGestureRecognizer. В противном случае, реализуйте следующие методы UIResponder в вашем пользовательском UIView:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

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

...