我想在用户多次单击同一个按钮后创建一个动作。我不知道如何实现这一点,我还没有找到任何可以帮助我的东西。
5 回答
在实现文件的顶部创建一个计数变量
@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
}
}
在viewDidLoad:
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(yourTapHandler:)];
[self.yourButton addGestureRecognizer:gestureRecognizer];
gestureRecognizer.numberOfTapsRequired = 10;
然后在yourTapHandler:
点击后做任何你想做的事情:
-(void)yourTapHandler:(UITapGestureRecognizer *)recognizer{
//do stuff
}
在视图控制器类中声明一个实例变量“count”。使用 XIB 或通过代码在控制器中使用addTarget:action: forControlEvents:
. 每次用户单击按钮时都会调用该方法。每次将计数增加 1。检查 if(count == 10) 或任何数字,在这种情况下,调用任何方法或执行任何你想要的代码。
您可以通过多种方式实现这一点。
一种是“制作你自己的按钮”并继承 UIButton 并尝试覆盖手势识别器。这可能是非常hacky和不干净的。
“制作自己的按钮”的另一种方法是制作一个 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 子类化,因为它是实现这一点的最干净的方式,也是最个性化的方式,而且我认为一旦你获得了你想要工作的功能,这对你来说将是一个很好的编程挑战。
UITapGestureRecognizer 怎么样?
- (void)handleTap:(UITapGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded){
//handle code here
}
}
这将为您处理多个水龙头。这是为您准备的Apple 文档,以便您了解它。
如果你谷歌方法名+tutorial,你可能会找到一堆。