2012-02-22 27 views
2

在我的项目中,我需要使用UIButton(或其他组件)来处理使用长按事件。 让我解释一下,我应该记住,我按住按钮一个计时器来计算秒数并释放压力停止,我尝试了UILongPressGestureRecognizer的管理,但事实并非如此,因为我记得按下按钮时的事件但是只有当我移动手指时,但是我希望计时器总是按住按钮(手指静止不动)并计数,并在手指松开时停止计数。UIButton长按手指静止

有谁知道如何帮助我? 谢谢

+0

我不明白你的问题。你可以试着用不同的方式说出来吗? – 2012-02-22 06:16:03

+0

嗨,我需要按一个按钮,并计算如何mutch秒我按它(如何mutch时间我的手指是在它上面),如果我保持我的手指上一个按钮5秒计时器启动并计数5秒,然后我释放按钮定时器停止。 – AleMal 2012-02-22 06:29:10

回答

6

使用按钮事件这两种方法。当您按下按钮时将调用touchDown,并且当您从按钮上抬起手指时将调用touchUp。计算这两种方法之间的时间差。您也可以在touchDown开始计时并在touchUp停止/重新启动它。

//connect this action with Touch up inside 
- (IBAction)touchUp:(id)sender { 
    NSLog(@"up"); 
} 

//connect this to tocuh down 
- (IBAction)touchDown:(id)sender{ 
    NSLog(@"down"); 
} 

更新 在编码,你可以这样写

[btn addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; 
[btn addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; 

和厦门国际银行enter image description here

+0

谢谢,但如何可以连接两个IBAction在我的按钮? – AleMal 2012-02-22 08:14:25

+0

我已经更新了我的答案.. – 2012-02-22 09:12:42

+0

非常感谢!!!! – AleMal 2012-02-22 09:46:47

0

同样的我已经做了...正如你说UILongPressGestureRecognizer,我不明白它..但你可以写在-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer { }里面的代码。我通过使用这种方法做了同样的事情,并取得了成功的结果.. :)。你甚至不需要添加计时器,代替ü可以使用...

UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] 
             initWithTarget:self action:@selector(handleLongPress:)]; 
lpgr.minimumPressDuration = 1.0; 
lpgr.delegate = self; 

我觉得这工作完全..

+0

谢谢,但如果我按住按钮上的手指锁定,它也可以工作?我尝试使用UILongPressGestureRecognizer,但它只有当我移动我的手指 – AleMal 2012-02-22 07:10:40

+0

它应该工作。除非你在UIScrollView中有这个按钮,否则你的UIGestureRecognizer会干扰这个。 – 2012-02-22 08:39:01