UIButton用手指固定长按

时间:2012-02-22 06:09:59

标签: iphone xcode uibutton pressure

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

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

2 个答案:

答案 0 :(得分: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 enter image description here

答案 1 :(得分:0)

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

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

我认为这很有效..