У кого-нибудь есть код для замены UILongPressGestureRecognizer? - PullRequest
2 голосов
/ 07 января 2011

Я бы хотел поддержать предварительную версию 3.2, и это единственный символ, который не хочет сотрудничать, кто-нибудь знает какой-нибудь код, созданный касанием, или что я могу использовать вместо UILongPressGestureRecognizer?

Ник

1 Ответ

1 голос
/ 08 января 2011

Как вы знаете, вы должны использовать функции touchesBegan, Moved, Ended и Cancelled для iOS до 3.2. Я думаю, что реализация только touchesMoved - это плохо, потому что если пользователь нажимает и вообще не двигается до отпускания, то touchesMoved никогда не будет вызываться.

Вместо этого я использовал NSTimer для получения события касания длинным нажатием. Это может быть не оптимальным решением, но оно хорошо работает для моего приложения. Вот фрагмент кода.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    isAvailable = NO;
    timer = [NSTimer scheduledTimerWithTimeInterval:DURATION target:self selector:@selector(didPassTime:) userInfo:nil repeats:NO];
}

- (void)didPassTime:(id)sender{
    isAvailable = YES;
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    if(isAvailable == YES){
        // still pressing after 0.5 seconds 
    }
    else{
        // still pressing before 0.5 seconds
    }
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    if(isAvailable == YES){
        // releasing a finger after 0.5 seconds
    }
    else {
        // releasing a finger before 0.5 seconds
            [timer invalidate];
            timer = nil;
    }



}
...