我想支持3.2之前的版本,这是唯一不希望合作的符号,任何人都知道一些触摸代码或可以代替UILongPressGestureRecognizer使用的东西吗?
谢谢,
缺口
最佳答案
如您所知,对于3.2之前的iOS版本,应使用touchesBegan,Move,Ended和Canceled函数。
我认为仅实现touchesMoved是不好的,因为如果用户按下并且在释放之前根本不动,那么touchMoved就永远不会被调用。
相反,我使用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;
}
}