objective-c – iOS – 双击uibutton
发布时间:2020-12-14 20:04:59 所属栏目:百科 来源:网络整理
导读:我有一个按钮,我正在测试它的水龙头,一点点它改变背景颜色,两个水龙头的另一种颜色和三个水龙头再次的颜色. 代码是: - (IBAction) button {UITapGestureRecognizer *tapOnce = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOn
我有一个按钮,我正在测试它的水龙头,一点点它改变背景颜色,两个水龙头的另一种颜色和三个水龙头再次的颜色.
代码是: - (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]; } 问题是,第一个水龙头不工作,另一个是. 解决方法
如果您想要点击按钮更改颜色,您应该在viewDidLoad方法中添加这些手势,而不是按照相同的按钮操作.上面的代码将重复添加手势点击按钮到self.view而不是按钮.
- (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]; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |