gpt4 book ai didi

iphone - UIGestureRecognizerStateBegan 在 iOS 6 中调用两次

转载 作者:行者123 更新时间:2023-11-28 22:38:07 27 4
gpt4 key购买 nike

提前致谢,我想分享 UILongPressGestureRecognizer 的奇怪行为。

UIView *v = [UIView alloc] initWithFrame:CGRectMake(0,0,20,20)];
UILongPressGestureRecognizer *longpressGesture1 = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[v addGestureRecognizer:longpressGesture1];

这里是处理手势识别器的委托(delegate)。

-(IBAction)tapped:(UILongPressGestureRecognizer *) gesture

{
switch ([gesture state]) {
case UIGestureRecognizerStateBegan:
{

NSLog(@"Long Tap detacted.");

}
break;
case UIGestureRecognizerStateChanged:
{
NSLog(@"UIGestureRecognizerStateChanged");


}
break;
case UIGestureRecognizerStateEnded:
{
NSLog(@"Long Tap ended.");

}
break;

}

}

这段代码在 iOS 4 和 5 中按预期完美运行,但在带有视网膜显示的 ios 6 中,当我们执行长按时,UIGestureRecognizerStateBegan 被调用两次以进行一次长按,结果在应用程序崩溃中。非常欢迎任何帮助。

最佳答案

UILongPressGestureRecognizer 是一个连续事件识别器。您必须查看状态以确定这是事件的开始、中间还是结束,并采取相应的行动。

它会调用两次,因为您按下并移开手指。

第一个电话指示您检测到长按,即 UIGestureRecognizerStateBegan第二次调用表明您该点击已结束,即 UIGestureRecognizerStateBegan

点击的三种状态

  1. UIGestureRecognizerStateBegan
  2. UIGestureRecognizerStateChanged
  3. UIGestureRecognizerStateEnded

如果您拖动手指,它会多次调用,这表明它的状态发生了一些变化。

关注UILongPressGestureRecognizer Class Reference更多

关于iphone - UIGestureRecognizerStateBegan 在 iOS 6 中调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15363311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com