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

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

手勢識別器和按鈕動作

手勢識別器和按鈕動作

iOS
守著一只汪 2019-11-06 10:41:53
我有一個看起來像這樣的視圖層次結構:UIView (A)UIView > UIImageViewUIView > UIView (B)UIView > UIView (B) > Rounded Rect ButtonUIView > UIView (B) > UIImageViewUIView > UIView (B) > UILabel我已將手勢識別器附加到我的UIView(B)。我面臨的問題是我沒有對UIView(B)內的Rounded Rect Button采取任何操作。singleTap手勢識別器捕獲/覆蓋按鈕的“ Touch Up Inside”事件。我該如何運作?我認為響應者鏈層次結構將確保將優先考慮按鈕觸摸事件,并且它將被觸發!我想念什么?以下是一些相關代碼:#pragma mark -#pragma mark View lifecycle (Gesture recognizer setup)- (void)viewDidLoad {    [super viewDidLoad];    // double tap gesture recognizer    UITapGestureRecognizer *dtapGestureRecognize = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapGestureRecognizer:)];    dtapGestureRecognize.delegate = self;    dtapGestureRecognize.numberOfTapsRequired = 2;    [self.viewB addGestureRecognizer:dtapGestureRecognize];    // single tap gesture recognizer    UITapGestureRecognizer *tapGestureRecognize = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureRecognizer:)];    tapGestureRecognize.delegate = self;    tapGestureRecognize.numberOfTapsRequired = 1;    [tapGestureRecognize requireGestureRecognizerToFail:dtapGestureRecognize];    [self.viewB addGestureRecognizer:tapGestureRecognize];    // add gesture recodgnizer to the grid view to start the edit mode    UILongPressGestureRecognizer *pahGestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGestureRecognizerStateChanged:)];    pahGestureRecognizer.delegate = self;    pahGestureRecognizer.minimumPressDuration = 0.5;    [self.viewB addGestureRecognizer:pahGestureRecognizer];    [dtapGestureRecognize release];    [tapGestureRecognize release];    [pahGestureRecognizer release];}#pragma mark -#pragma mark Button actions- (IBAction)buttonTouchUpInside:(id)sender {    NSLog(@"%s, %@", __FUNCTION__, sender);}#pragma mark -#pragma mark Gesture recognizer actions- (void)singleTapGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer {    NSLog(@"%s", __FUNCTION__);}
查看完整描述

3 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

在“ shouldReceiveTouch”方法中,應添加一個條件,如果觸摸按鈕,則該條件將返回NO。


這來自蘋果的SimpleGestureRecognizers示例。


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {


? ? // Disallow recognition of tap gestures in the segmented control.

? ? if ((touch.view == yourButton)) {//change it to your condition

? ? ? ? return NO;

? ? }

? ? return YES;

}

希望對你有幫助


正如丹尼爾(Daniel)指出的那樣,您必須遵守UIGestureRecognizerDelegate它才能正常工作。



查看完整回答
反對 回復 2019-11-06
  • 3 回答
  • 0 關注
  • 603 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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