延迟一个动作

时间:2016-07-13 21:04:45

标签: swift ios7

我有UIView A和UIView B. A是scrollView的子视图以及兄弟姐妹子视图C-Z。 B有一个UILongPressGestureRecognizer,可以拖动。如果B被拖入A或C-Z内部,我有能力做某事。但是,我希望只有当B在A内停留1秒钟时该功能才会消失。如果B在那之后不在A内,我不希望发生任何事情。我怎样才能做到这一点?我已经尝试过使用NSTimer了。

timer = NSTimer()
timer.scheduledTimerWithInterval(1.0,target:self,  #selector(fireMethod),userInfo:nil, repeats:Yes)

它似乎工作了一次,但在第一次之后,它再也没有用了。

3 个答案:

答案 0 :(得分:1)

试试这个Swift 3.0

func delayWithSeconds(_ seconds: Double, completion: @escaping () -> ()) {
    DispatchQueue.main.asyncAfter(deadline: .now() + seconds) { 
        completion()
    }
}

用法

delayWithSeconds(1) {
   //Do something
}

答案 1 :(得分:0)

创建一个像这样的延迟函数

func delay(delay:Double, closure:()->()) {

    dispatch_after(
        dispatch_time( DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), closure)


}

然后在你的UILongPressGestureRecognizer中调用该函数

self.delay(1)
{
  //code here
}

答案 2 :(得分:0)

试试这段代码。

[self performSelector:@selector(yourAction:) withObject:nil afterDelay:2.3];//give delay asper your requirement.

-(void)yourAction
{
//your reuire code after delay.
}