关于UILongPressGestureRecognizer调用多次的问题

原因:UILongPressGestureRecognizer绑定的方法执行了两次

我做了一个功能是长按Button,弹出一个视图菜单,这就需要使用长按手势,写完了发现绑定的方法执行了两次,如果是赋值操作那还无所谓,因为赋值我们是看不见的,第二次赋值将原来的值覆盖,但是这里是弹出视图,执行了两次就对应了视图菜单弹出了两次,因为LongPress有多个状态,例如Began、Changed、Ended等等,所以按下去时候对应Began,会执行一次;抬起来时候Ended再次执行一次。如果你再移动手指位置,那么应该还会执行一次,这就是为什么LongPress执行多次的原因了。

在网上搜到的解决方法如下,

- (void)Longress:(UIGestureRecognizer *)gestrue
{
    //直接return掉,不在开始的状态里面添加任何操作,则长按手势就会被少调用一次了
    if (gestrue.state != UIGestureRecognizerStateBegan)
    {
        return;
    }
    //下面写上想要执行的操作
    [... ...]
    self.xxx = xxx;
}

这里就是return语句的精髓所在了,如果符合判断条件,直接return,不执行下面的方法。

该文转载至:http://www.th7.cn/Program/IOS/201406/213934.shtml

心得:在网上找一个问题的答案难免会出现许多你不想要又或者你想要却看不懂的答案,所以当我们找到一个相宜的就存在自己的博客里面吧,毕竟自己知道自己想要什么


你可能感兴趣的:(关于UILongPressGestureRecognizer调用多次的问题)