我想在用户多次点击同一个按钮后创建一个动作。我不知道如何实现这一点,我还没有找到任何可以帮助我的东西。
答案 0 :(得分:2)
在实现文件的顶部创建一个计数变量
@interface yourViewController (){
int buttonCount;
}
初始化某地(例如viewDidLoad
)
buttonCount = 0;
在您的IBAction中(假设您已将UIButton链接到IBAction)
- (IBAction)yourButton:(id)sender{
buttonCount++;
if (buttonCount >= 10){ // button clicked 10 or more times
//do something
buttonCount = 0;//if you need to reset after action
}
}
答案 1 :(得分:0)
您可以通过多种方式实现此目标。
一个是“制作你自己的按钮”并继承UIButton并尝试覆盖手势识别器。这可能是非常黑客和不干净的。
另一种“制作你自己的按钮”的方法是制作一个UIView,它有一个TapGestureRecognizer,其numberOfTapsRequired设置为你想要的水龙头数。
我认为最适合您的目的的方法(可能)是在您的私有@interface中有一个全局变量,它放在实现文件的顶部(如此),然后在每次点击按钮时递增它,然后在动作发生时重置它。
@interface YourViewController (){
NSInteger buttonTaps;
}
@end
@implementation YourViewController
-(IBAction)buttonTap:(id)sender
{
if (buttonTaps < numberYouWant)
buttonTaps++;
else
[self theNameOfTheMethodThatImplementsTheThingsYouWantToOccur]
}
-(void) theNameOfTheMethodThatImplementsTheThingsYouWantToOccur
{
// perform your action
buttonTaps = 0; // reset counter
}
@end
希望这有帮助!
修改强>
我只想注意,我可能会将UIView作为子类,因为它是实现这个和最个性化的最干净的方式,而且我认为一旦你获得了你想要的功能,你就会有一个很好的编程挑战。< / p>
答案 2 :(得分:0)
UITapGestureRecognizer怎么样?
- (void)handleTap:(UITapGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded){
//handle code here
}
}
这将为您处理多个分接头。以下是您的Apple docs,以便您了解它。
如果你谷歌的方法名称+教程,你可能会找到一堆。
答案 3 :(得分:0)
在viewDidLoad:
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(yourTapHandler:)];
[self.yourButton addGestureRecognizer:gestureRecognizer];
gestureRecognizer.numberOfTapsRequired = 10;
然后在yourTapHandler:
中做任何你想要在点击后发生的事情:
-(void)yourTapHandler:(UITapGestureRecognizer *)recognizer{
//do stuff
}
答案 4 :(得分:0)
在视图控制器类中声明实例变量“count”。使用XIB或通过代码使用addTarget:action: forControlEvents:
将控制按钮连接到操作方法。每次用户单击按钮时都会调用该方法。每次增加1次。检查是否(count == 10)或任何数字,在这种情况下,调用任何方法或执行您想要的任何代码。