簡體   English   中英

輕按一下手勢識別器

[英]Single Tap TapGestureRecognizer

我正在嘗試將此代碼用於輕擊手勢識別器,當所需的輕擊次數設置為2時,它工作正常,但是當我將所需的輕擊次數設置為1時,它將停止運行。 感謝您為使它正常工作所提供的幫助。

   UITapGestureRecognizer *doubleTap =
    [[UITapGestureRecognizer alloc]
     initWithTarget:self
     action:@selector(tapDetected:)];
   [doubleTap setNumberOfTapsRequired : 1];
[doubleTap setDelaysTouchesBegan : YES];
    [self.view addGestureRecognizer:doubleTap];

您可以嘗試以下方法:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(tapDetected:)];
singleTap.numberOfTapsRequired = 1; 
[self.view addGestureRecognizer:singleTap];

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(tapDetected:)];
doubleTap.numberOfTapsRequired = 2; 
[self.view addGestureRecognizer:doubleTap];

[singleTap requireGestureRecognizerToFail:doubleTap];

這對我有用。

如果只希望接收者對一個/第一次觸摸做出響應,則setDelaysTouchesBegan:NO因為這是用於處理UITouchPhaseBegan觸摸,所以將對其進行分析並阻止進行傳遞。 文檔中的屬性討論:

當此屬性的值為NO(默認值)時,視圖將與接收器並行分析UITouchPhaseBegan和UITouchPhaseMoved中的觸摸事件。 當該屬性的值為YES時,該窗口將掛起UITouchPhaseBegan階段中的觸摸對象向視圖的傳遞。 如果手勢識別器隨后識別出其手勢,則將這些觸摸對象丟棄。 但是,如果手勢識別器無法識別其手勢,則窗口會通過touchesBegan:withEvent:消息(可能還有后續touchesMoved:withEvent:消息將這些對象告知觸摸的當前位置)將這些對象傳遞給視圖。 。 將此屬性設置為YES,可以防止視圖處理UITouchPhaseBegan階段中可能被識別為該手勢的任何觸摸。

在我看來,您只是無法設置GestureRecognizer的委托。 您確定雙擊成功觸發了嗎? 當我將代碼放入項目時,我會看到相同的行為,但是正確設置委托並使用shouldRecognizeSimultaneouslyWithGestureRecognizer會使其正確識別單擊。

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                                            action:@selector(tapDetected:)];
[doubleTap setDelegate:self];
[doubleTap setNumberOfTapsRequired : 1];
[doubleTap setDelaysTouchesBegan : YES];
[picker addGestureRecognizer:doubleTap];

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    if ([gestureRecognizer isKindOfClass:UITapGestureRecognizer.class] &&
        [otherGestureRecognizer isKindOfClass:UITapGestureRecognizer.class])
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM