Мне нужно различать два сенсорных события.Как я могу различить два события? - PullRequest
1 голос
/ 27 марта 2012

Я ловлю сенсорные события.Мне нужно различать два события 1) Пользователь коснулся экрана, а затем поднял палец 2) Пользователь коснулся экрана и не поднял палец Как я могу различить два события?

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
 if (isFirstCase)
 {}
 if (isSecondCase)
 {}
}

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

Атрибут (NSSet *)touches содержит UITouch объектов, каждый из которых содержит несколько полезных свойств:

@property(nonatomic, readonly) NSUInteger tapCount
@property(nonatomic, readonly) NSTimeInterval timestamp
@property(nonatomic, readonly) UITouchPhase phase
@property(nonatomic,readonly,copy) NSArray *gestureRecognizers

typedef enum {
    UITouchPhaseBegan,
    UITouchPhaseMoved,
    UITouchPhaseStationary,
    UITouchPhaseEnded,
    UITouchPhaseCancelled,
} UITouchPhase;

Phase и tapCount - это очень удобное свойство для определения типа касания. Проверьте, можете ли вы использовать UIGestureRecognizer. NSArray *gestureRecognizers - массив объектов, относящихся к данному конкретному касанию.

Хорошего дня:)

2 голосов
/ 27 марта 2012

Вы можете использовать распознаватели жестов:

Сначала необходимо зарегистрировать распознаватели жестов:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                         initWithTarget:self 
                                         action:@selector(handleTap:)];
[myView addGestureRecognizer:tap];

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
                                         initWithTarget:self 
                                         action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 1.0;
[myView addGestureRecognizer:longPress];

Тогда вы должны написать методы действия:

- (void)handleTap:(UITapGestureRecognizer *)gesture
{
    // simple tap
}

- (void)handleLongPress:(UILongPressGestureRecognizer *)gesture
{
    // long tap
}
...