所以我实现了一个单指长按手势识别器,但识别器似乎总是缺少UIGestureRecognizerStateBegan状态...... 如果我长按w / o移动手指并抬起,我会收到StateEnded调试消息。 如果我长按并稍微移动手指然后抬起,我会收到StateChanged和StateEnded调试消息。 但我从未见过StateBegan。
UIPanGestureRecognizer没有此问题 - Pan从Began-> Changed->结束获取所有正确的手势状态。
- (void)handleLongPress:(UILongPressGestureRecognizer *)recognizer {
CGPoint location = [recognizer locationInView:self];
switch (recognizer.state) {
case UIGestureRecognizerStateBegan:
NSLog(@"!!!!handleLongPress: StateBegan !!!!!");
break;
case UIGestureRecognizerStateChanged:
NSLog(@"!!!!handleLongPress: StateChanged !!!!!");
break;
case UIGestureRecognizerStateEnded:
NSLog(@"!!!!handleLongPress: StateEnded !!!!!");
break;
default:
break;
}
}
答案 0 :(得分:1)
我遇到了类似的问题,它是由UILongPressGestureRecognizer设置引起的:我使用的原始示例代码指定了numberOfTapsRequired = 1,我必须快速点击并释放,然后长按以使其工作而不是仅仅点击并按住几秒钟。当我删除numberOfTapsRequired时,代码现在表现得像我预期的那样。希望这有助于=)