Обнаружение касания двумя пальцами на UIIMageView

Я пытаюсь обнаружить прикосновение двумя пальцами к объекту UIImageView. В xib я включил мультитач. Затем я реализовал следующий код:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    //NSLog(@"%@", [[touches anyObject] class]);
    UITouch* touch = [touches anyObject];
    NSLog(@"%@", [touch class]);
    if ([touches count] > 1)
        NSLog(@"multi touches: %d fingers", [touches count]);

    NSUInteger numTaps = [touch tapCount];

    if (numTaps == 1) {
        NSLog(@"single tap");
    } else {
        NSLog(@"multi tap: %d", numTaps);
    }
}

Что на самом деле происходит с этим кодом: это обнаружение нескольких нажатий, а не мультитач. Как я могу обнаружить, что пользователь коснулся объекта двумя пальцами (Multi-Touch).

Спасибо


person Kapil Choubisa    schedule 30.06.2011    source источник


Ответы (3)


Используйте распознаватели жестов следующим образом:

UITapGestureRecognizer *twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleFingerTap:)];
twoFingerTap.numberOfTouchesRequired = 2;
[super addGestureRecognizers:twoFingerTap];

http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizers/GestureRecognizers.html

person Ved    schedule 30.06.2011
comment
Это не работает с UIIMageView, когда я пытаюсь его добавить. Это хорошо работает на моем представлении. Могу ли я использовать его на объекте ImageView? - person Kapil Choubisa; 30.06.2011
comment
Или я могу обнаружить точки касания, чтобы проверить, происходит ли касание в области изображения?..? - person Kapil Choubisa; 30.06.2011
comment
Создайте класс customView и добавьте к нему imageView. - person Ved; 30.06.2011
comment
addGestureRecognizer, НЕ addGestureRecognizers - person etayluz; 01.07.2015
comment
Это numberOfTouchesRequired означает либо одно касание, либо двойное касание. я - person ZijunLost; 01.05.2017

На этом этапе вам действительно лучше использовать распознаватель жестов, ища два нажатия двумя пальцами.

person Kendall Helmstetter Gelner    schedule 30.06.2011

Вы можете использовать объект события для того же, что и

 NSSet *touch = [event allTouches];
 int touchCounts = [touch count];
 if(touchCounts >2)
 {
 //Multitouch.
 }
person Janak Nirmal    schedule 30.06.2011