[iphone] UILongPressGestureRecognizer는 아래를 누를 때 두 번 호출됩니다.



2 Answers

UILongPressGestureRecognizer의 상태를 확인하려면 selector 메서드에 if 문을 추가하기 만하면됩니다.

- (void)handleLongPress:(UILongPressGestureRecognizer *)sender {    
    if (sender.state == UIGestureRecognizerStateEnded) {
        NSLog(@"Long press Ended");
    } else if (sender.state == UIGestureRecognizerStateBegan) {
        NSLog(@"Long press detected.");
    }
}
Question

사용자가 2 초 동안 눌렀을 때 감지하고 있습니다.

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
                                             initWithTarget:self 
                                             action:@selector(handleLongPress:)];
        longPress.minimumPressDuration = 2.0;
        [self addGestureRecognizer:longPress];
        [longPress release];

이것이 제가 긴 언론을 다루는 방법입니다 :

-(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{
    NSLog(@"double oo");
}

2 초 이상 누르면 "double oo"텍스트가 두 번 인쇄됩니다. 왜 이런거야? 어떻게 해결할 수 있습니까?




스위프트 3.0 :

func handleLongPress(sender: UILongPressGestureRecognizer) {

    if sender.state == .ended {
        print("Long press Ended")
    } else if sender.state == .began {
        print("Long press detected")
    }



그냥 시도해보십시오.

목표 -C

- (void)handleLongPress:(UILongPressGestureRecognizer*)sender { 
    if (sender.state == UIGestureRecognizerStateEnded) {
        NSLog(@"Long press Ended");
    } else if (sender.state == UIGestureRecognizerStateBegan) {
        NSLog(@"Long press detected.");
    }
}

스위프트 2.2 :

func handleLongPress(sender:UILongPressGestureRecognizer) {

        if (sender.state == UIGestureRecognizerState.Ended) {
            print("Long press Ended");
        } else if (sender.state == UIGestureRecognizerState.Began) {
            print("Long press detected.");
        }
}



Related