在UIButton上多次单击后创建操作

时间:2013-08-08 19:27:26

标签: ios uibutton

我想在用户多次点击同一个按钮后创建一个动作。我不知道如何实现这一点,我还没有找到任何可以帮助我的东西。

5 个答案:

答案 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)或任何数字,在这种情况下,调用任何方法或执行您想要的任何代码。