任何人都有代码来替代UILongPressGestureRecognizer?

时间:2011-01-07 19:19:14

标签: iphone ios touch uigesturerecognizer touchesmoved

我想支持3.2之前的版本,这是唯一不想合作的符号,任何人都知道一些触摸移动的代码或我可以用来代替UILongPressGestureRecognizer的东西吗?

谢谢,

尼克

1 个答案:

答案 0 :(得分:1)

如您所知,您应该在3.2之前版本中使用touchesBegan,Moved,Ended和Cancelled函数。 我认为只实现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;
    }



}