iphone按钮按下3秒会进入不同的视图

时间:2010-12-08 05:46:06

标签: iphone uibutton nstimer

我的应用程序中有一个按钮,当按下该按钮进入视图时 但是我需要按下3秒才能看到不同的视图,

就像你在Safari上使用ipad并按下网址一样,它会显示弹出的副本等,

但我需要在按下3秒时进入另一个视图......

希望这是有道理的,如果不理解,我会更好地解释,

非常感谢你! pd,还有如何让它显示弹出式窗口? 干杯!

3 个答案:

答案 0 :(得分:4)

尝试在视图控制器中设置NSTimer属性。按下按钮后,创建计时器并将其分配给您的财产。你可以用这个来检测那个时刻:

[button addTarget:self action:@selector(startHoldTimer) forControlEvents:UIControlEventTouchDown];

并指定:

-(void) startHoldTimer {
    self.myTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(goToNewView:) userInfo:nil repeats:NO];
}

然后设置一个动作,以取消触摸或内部修饰:

[button addTarget:self action:@selector(touchUp) forControlEvents:UIControlEventTouchUpInside];
[button addTarget:self action:@selector(cancelTimer) forControlEvents:UIControlEventTouchCancel];

//if timer fires, this method gets called
-(void) goToNewView {
    [self cancelTimer];
    [self loadSecondView];
}

// normal button press invalidates the timer, and loads the first view
-(void) touchUp {
    [self cancelTimer];
    [self loadFirstView];
}

//protected, just in case self.myTimer wasn't assigned
-(void) cancelTimer {
    if (self.myTimer != nil)
        if ([self.myTimer isValid]) {
            [self.myTimer invalidate];
    }
}

应该照顾它!

答案 1 :(得分:1)

使用UILongPressGestureRecognizer添加到带有-addGestureRecognizer:的按钮 - 当它识别按钮被按下一段时间时,它将处理触摸定时并触发事件。您可能想重新考虑您的交互模式,但通常情况下,可以长按的内容不是按钮,它们是视图中的实际数据片段,如图像或Safari中的链接。

答案 2 :(得分:0)

一种可能的方法是实现其中一个触摸事件(我不记得名称,但是当你按下按钮时触发的方法),并安排计时器在三秒内触发。如果用户在此之前抬起手指,请取消计时器并执行正常的按钮单击。如果时间已触发(即已经过了3秒),请忽略触摸事件并加载新视图。