亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

UITapGestureRecognizer-單擊和雙擊

UITapGestureRecognizer-單擊和雙擊

弒天下 2019-12-09 15:51:56
我正在嘗試向UITapGestureRecognizers視圖添加2 ,一個用于單擊,一個用于雙擊事件。單抽頭識別器正在按預期運行(單獨運行)。但是我似乎無法使雙擊識別器正常工作。已經嘗試具有類似性質的實驗:cancelsTouchesInView,delaysTouchesBegan和delaysTouchesEnded,但仍然無法正常工作。當我雙擊時,將始終激活單擊識別器,并且還將將雙擊事件發送到超級視圖。但是自定義雙擊識別器似乎根本沒有得到通知。文檔似乎表明可以將上述3個屬性用于此目的。但是我不確定應該設置哪些值以及在哪些識別器上(單,雙或雙)。希望有人對此有所幫助。以下是最新更新的代碼塊。// ****** gesture recognizers ******- (void)addSingleAndDoubleTapGestureRecognizersToView:(UIView *)view{    // single tap        UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget: tableViewController action: @selector(handleSingleTapOnView:)];                                     [singleTapRecognizer setNumberOfTouchesRequired:1];    [view addGestureRecognizer: singleTapRecognizer];    // double tap     UITapGestureRecognizer *doubleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget: tableViewController action: @selector (handleDoubleTapOnView:)];            [doubleTapRecognizer setNumberOfTouchesRequired:2];             [singleTapRecognizer requireGestureRecognizerToFail: doubleTapRecognizer];    [view addGestureRecognizer: doubleTapRecognizer];         }- (void)handleSingleTapOnView:(id)sender{}- (void)handleDoubleTapOnView:(id)sender{}
查看完整描述

3 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

UITapGestureRecognizer *singleTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doSingleTap)] autorelease];

singleTap.numberOfTapsRequired = 1; 

[self.view addGestureRecognizer:singleTap];


UITapGestureRecognizer *doubleTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doDoubleTap)] autorelease];

doubleTap.numberOfTapsRequired = 2; 

[self.view addGestureRecognizer:doubleTap];


[singleTap requireGestureRecognizerToFail:doubleTap];

注意: 如果要使用 numberOfTouchesRequired 它,必須 .numberOfTouchesRequired = 1;


對于斯威夫特


let singleTapGesture = UITapGestureRecognizer(target: self, action: #selector(didPressPartButton))

singleTapGesture.numberOfTapsRequired = 1

view.addGestureRecognizer(singleTapGesture)


let doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(didDoubleTap))

doubleTapGesture.numberOfTapsRequired = 2

view.addGestureRecognizer(doubleTapGesture)


singleTapGesture.require(toFail: doubleTapGesture)


查看完整回答
反對 回復 2019-12-09
?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

Swift 3解決方案:


let singleTap = UITapGestureRecognizer(target: self, action:#selector(self.singleTapAction(_:)))

singleTap.numberOfTapsRequired = 1

view.addGestureRecognizer(singleTap)


let doubleTap = UITapGestureRecognizer(target: self, action:#selector(self.doubleTapAction(_:)))

doubleTap.numberOfTapsRequired = 2

view.addGestureRecognizer(doubleTap)


singleTap.require(toFail: doubleTap)

在代碼行singleTap.require(toFail:doubleTap)中,我們強制單擊以等待并確保tap事件不是雙擊。


查看完整回答
反對 回復 2019-12-09
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

// ----首先,您必須分配雙擊手勢------- //


UITapGestureRecognizer* doubleTap = [[UITapGestureRecognizer alloc] initWithTarget : self action : @selector (handleDoubleTap:)];


UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget : self action : @selector (handleSingleTap:)];


[singleTap requireGestureRecognizerToFail : doubleTap];

[doubleTap setDelaysTouchesBegan : YES];

[singleTap setDelaysTouchesBegan : YES];

// -----------------------抽頭數---------------- //


[doubleTap setNumberOfTapsRequired : 2];

[singleTap setNumberOfTapsRequired : 1];

// -------在視圖或按鈕上添加雙擊和單擊手勢-------- //


[self.view addGestureRecognizer : doubleTap];

[self.view addGestureRecognizer : singleTap];


查看完整回答
反對 回復 2019-12-09
  • 3 回答
  • 0 關注
  • 988 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號