[英]Tap on UIBarButtonItem is not ignored by TapGestureRecognizer
[英]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.