Задержка сенсорного ответа - PullRequest
       5

Задержка сенсорного ответа

0 голосов
/ 30 сентября 2011

У меня есть переменная с именем touchStatus, которая отслеживает состояние касания в программе.Переменная устанавливается на B в методе touchesBegan, E в touchesEnded и на M в touchesMoved.

Однако мои требования немного отличаются.Меня попросили запрограммировать таким образом, чтобы задержка пальца отрывалась от экрана и была установлена ​​на E с задержкой в ​​одну секунду.Если пользователь прикасается к экрану до истечения одной секунды, touchStatus должен оставаться равным M или B (каким бы он ни был до одной секунды).

Как мне это сделать?

Ответы [ 3 ]

1 голос
/ 30 сентября 2011

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

[self performSelector:@selector(setEndedValue:) withObject:self afterDelay:1.0];

Создать BOOL, чтобы отслеживать, следует ли устанавливать значение, например:

BOOL hasTouchRestarted = NO;

Если снова коснуться экрана до установки значения,измените значение на YES и вернитесь из метода setEndedValue.

-(void)setEndedValue {
    if ( hasTouchRestarted ) { return; }
   // set value
    self.touchStatus = E;
}
0 голосов
/ 30 сентября 2011

Используйте таймер NSTimer * ivar для инициации отложенного вызова и отмените вызов, если пользователь поднимает палец в течение одной секунды.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    self.myvar = @"B";
    [self.timer invalidate];
    self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(handleOneSecondPress) userInfo:nil repeats:NO];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event {
    [self.timer invalidate];
    self.timer = nil;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    self.myvar = @"M";
}
- (void)handleOneSecondPress {
    self.timer = nil;
    self.myvar = @"E";
}
0 голосов
/ 30 сентября 2011

В программе touchEnded установите задачу NSTimer для вызова селектора за одну секунду.Если до этого произошло другое касание, отмените задание таймера.

...