如何在iOS 3.2以下的iOS中获得Long Press手势的功能

Ami*_*mit 10 iphone-sdk-2 ios

UILongPressGesture可在ios ver 3.2及更高版本中使用.但我正在尝试开发应用程序以实现最大兼容性,从而针对ios ver2.0

任何人都可以指导我如何在ios v2.0中完成长按手势

Dan*_*son 18

对于单个手指,它非常简单:在touchesBegan方法中启动计时器并在计时器触发时触发操作.如果touchesEnded在它发生之前触发了计时器,请取消计时器.这是一个使用该performSelector:withObject:afterDelay:方法的实现.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self performSelector:@selector(fireLongPress)
               withObject:nil
               afterDelay:LONG_PRESS_THRESHOLD];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [NSObject cancelPreviousPerformRequestsWithTarget:self];
}

- (void)fireLongPress {
    // do what you want to do
}
Run Code Online (Sandbox Code Playgroud)

如果手指移得太远,你可能还想杀死计时器.

多点触控,它有点复杂.你必须跟踪哪个触摸是哪个,并决定做什么,例如当一个手指按压的时间足够长但另一个手指未按下(或弄清楚是什么UILongPressGestureRecognizer)时.

  • 我不得不使用`[NSObject cancelPreviousPerformRequestsWithTarget:self]`. (5认同)