iOS – 在uibutton上双击

我有一个button,我正在testing它的水龙头,只需轻轻一按,它就会改变背景颜色,两次轻拍另一种颜色,三次轻敲另一种颜色。 代码是:

- (IBAction) button { UITapGestureRecognizer *tapOnce = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnce:)]; UITapGestureRecognizer *tapTwice = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTwice:)]; UITapGestureRecognizer *tapTrice = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTrice:)]; tapOnce.numberOfTapsRequired = 1; tapTwice.numberOfTapsRequired = 2; tapTrice.numberOfTapsRequired = 3; //stops tapOnce from overriding tapTwice [tapOnce requireGestureRecognizerToFail:tapTwice]; [tapTwice requireGestureRecognizerToFail:tapTrice]; //then need to add the gesture recogniser to a view - this will be the view that recognises the gesture [self.view addGestureRecognizer:tapOnce]; [self.view addGestureRecognizer:tapTwice]; [self.view addGestureRecognizer:tapTrice]; } - (void)tapOnce:(UIGestureRecognizer *)gesture { self.view.backgroundColor = [UIColor redColor]; } - (void)tapTwice:(UIGestureRecognizer *)gesture {self.view.backgroundColor = [UIColor blackColor];} - (void)tapTrice:(UIGestureRecognizer *)gesture {self.view.backgroundColor = [UIColor yellowColor]; } 

问题是,第一个水龙头不工作,另一个是的。 如果我使用这个代码没有button,它完美的作品。 谢谢。

如果你想要按下button来改变颜色,你应该在viewDidLoad方法中添加这些手势,而不是在同一个button上。 上面的代码会反复添加button上的手势到self.view而不是button

 - (void)viewDidLoad { [super viewDidLoad]; UITapGestureRecognizer *tapOnce = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnce:)]; UITapGestureRecognizer *tapTwice = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTwice:)]; UITapGestureRecognizer *tapTrice = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTrice:)]; tapOnce.numberOfTapsRequired = 1; tapTwice.numberOfTapsRequired = 2; tapTrice.numberOfTapsRequired = 3; //stops tapOnce from overriding tapTwice [tapOnce requireGestureRecognizerToFail:tapTwice]; [tapTwice requireGestureRecognizerToFail:tapTrice]; //then need to add the gesture recogniser to a view - this will be the view that recognises the gesture [self.button addGestureRecognizer:tapOnce]; //remove the other button action which calls method `button` [self.button addGestureRecognizer:tapTwice]; [self.button addGestureRecognizer:tapTrice]; }