UILongPressGestureRecognizer 缺少 UIGestureRecognizerStateBegan 状态!
Posted
技术标签:
【中文标题】UILongPressGestureRecognizer 缺少 UIGestureRecognizerStateBegan 状态!【英文标题】:UILongPressGestureRecognizer missing UIGestureRecognizerStateBegan state! 【发布时间】:2010-07-26 22:12:52 【问题描述】:所以我实现了一个单指长按手势识别器,但识别器似乎总是缺少 UIGestureRecognizerStateBegan 状态... 如果我在没有移动手指的情况下长按并抬起,我会收到 StateEnded 调试消息。 如果我长按并稍微移动手指然后抬起,我会收到 StateChanged 和 StateEnded 调试消息。 但我从未见过 StateBegan。
UIPanGestureRecognizer 没有这个问题 - Pan 从 Began->Changed->Ended 获取所有正确的手势状态。
- (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;
【问题讨论】:
您的代码对我来说似乎运行良好。您是否在点击和平移手势识别器之间设置了任何类型的依赖关系,或者您在该视图上是否还有任何其他识别器? 我的任何手势识别器之间没有依赖关系。是的,我在这个观点上确实有几个识别者。我被难住了... :( 【参考方案1】:我遇到了类似的问题,它是由 UILongPressGestureRecognizer 设置引起的:我使用的原始示例代码指定 numberOfTapsRequired = 1,我必须快速点击并释放,然后长按才能使其工作,而不仅仅是点击并按住几秒钟。当我删除 numberOfTapsRequired 时,代码现在的行为符合我的预期。希望这会有所帮助 =)
【讨论】:
哈,我真傻!我刚刚看到一年多前提出的原始问题,但无论如何,希望我的回答可以帮助其他人;-)以上是关于UILongPressGestureRecognizer 缺少 UIGestureRecognizerStateBegan 状态!的主要内容,如果未能解决你的问题,请参考以下文章