我的应用程序中有一个按钮,当按下该按钮进入视图时 但是我需要按下3秒才能看到不同的视图,
就像你在Safari上使用ipad并按下网址一样,它会显示弹出的副本等,
但我需要在按下3秒时进入另一个视图......
希望这是有道理的,如果不理解,我会更好地解释,
非常感谢你! pd,还有如何让它显示弹出式窗口? 干杯!
答案 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秒),请忽略触摸事件并加载新视图。