我有一个UIButton,用户必须在三秒钟内单击5次,我试图为此实现一种方法,但是如果用户连续3秒钟单击按钮5次,则会获得正确的结果,如果例如,用户单击一次并停止2秒钟,则计数器会在计算中进行第一次点击。

简而言之,我需要一种方法来检测最近的五次点击,并知道这些点击是否在三秒钟之内...

这是我的旧代码:

-(void)btnClicked{
 counter++;

if (totalTime <=3 && counter==5) {

        NSLog(@"My action");
        // My action
}}

我知道我的代码太简单了,所以为什么我问你亲

最佳答案

尝试适当地更改此示例:

// somewhere in the initialization - counter is an int, timedOut is a BOOL
counter = 0;
timedOut = NO;

- (void)buttonClicked:(UIButton *)btn
{
    if ((++counter >= 5) && !timedOut) {
        NSLog(@"User clicked button 5 times within 3 secs");

        // for nitpickers
        timedOut = NO;
        counter = 0;
    }
}

// ...

[NSTimer scheduledTimerWithTimeInterval:3.0
    target:self
    selector:@selector(timedOut)
    userInfo:nil
    repeats:NO
];

- (void)timedOut
{
    timedOut = YES;
}

10-08 05:33