iOS经典讲解之长按手势执行多次解决办法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Loving_iOS/article/details/81668666

 添加长按手势会出现方法响应多次的情况

 UILongPressGestureRecognizer *touch = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
    
[self addGestureRecognizer:touch];

 解决方法:根据手势的状态判断,只有第一次执行时是UIGestureRecognizerStateBegan,其余都是UIGestureRecognizerStateEnd状态。

-(void)handleTap:(UIGestureRecognizer*)recognizer {
    if (recognizer.state == UIGestureRecognizerStateBegan) {
        NSLog(@"long pressTap state :begin");
        [self becomeFirstResponder];
        UIMenuItem *copyLink = [[UIMenuItem alloc] initWithTitle:@"复制"
        
                                                              action:@selector(copy:)];
        
        [[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObjects:copyLink, nil]];
        
        [[UIMenuController sharedMenuController] setTargetRect:self.frame inView:self.superview];
        [[UIMenuController sharedMenuController] setMenuVisible:YES animated: YES];
    }else {
        NSLog(@"long pressTap state :end");
    }
}

猜你喜欢

转载自blog.csdn.net/Loving_iOS/article/details/81668666
今日推荐