-6

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

4

5 回答 5

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
   }

}
于 2013-08-08T19:34:57.290 回答
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
}
于 2013-08-08T19:39:52.057 回答
0

在视图控制器类中声明一个实例变量“count”。使用 XIB 或通过代码在控制器中使用addTarget:action: forControlEvents:. 每次用户单击按钮时都会调用该方法。每次将计数增加 1。检查 if(count == 10) 或任何数字,在这种情况下,调用任何方法或执行任何你想要的代码。

于 2013-08-08T19:39:52.990 回答
0

您可以通过多种方式实现这一点。

一种是“制作你自己的按钮”并继承 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 子类化,因为它是实现这一点的最干净的方式,也是最个性化的方式,而且我认为一旦你获得了你想要工作的功能,这对你来说将是一个很好的编程挑战。

于 2013-08-08T19:36:08.940 回答
0

UITapGestureRecognizer 怎么样?

- (void)handleTap:(UITapGestureRecognizer *)sender {     
    if (sender.state == UIGestureRecognizerStateEnded){
    //handle code here
  } 
}

这将为您处理多个水龙头。这是为您准备的Apple 文档,以便您了解它。

如果你谷歌方法名+tutorial,你可能会找到一堆。

于 2013-08-08T19:36:37.763 回答