2

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

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

4

2 回答 2

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];

在xib中在此处输入图像描述

于 2012-02-22T07:36:52.963 回答
0

我也做了同样的事情......正如你所说的 UILongPressGestureRecognizer,我无法理解......但你可以在里面写你的代码-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer { }。我通过使用这种方法做了同样的事情并获得了成功的结果..:)。您甚至不需要添加计时器,而是可以使用...

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

我认为这非常有效..

于 2012-02-22T07:05:36.190 回答