2016-01-06 122 views
0

VAR的NSTimer的点击定时器=的NSTimer()开始与任何按钮

override func viewDidLoad() { 

    super.viewDidLoad() 



    // Do any additional setup after loading the view. 
} 

override func viewDidDisappear(animated: Bool) { 
    self.nsTimer.invalidate() 
} 
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    nsTimer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: Selector("updatetime"), userInfo: nil, repeats: true); 
} 

func updateTime() { 
    counter = counter + 0.1 
    timer.text = String(format: "%.1f", counter) + "s" 
} 

任何一个知道的? 当我点击任何按钮计时器开始时,当我点击另一个按钮计时器包含

+0

删除您的代码添加适当的标签表明你的兴趣的一种编程语言。它是Objective-c吗?如果是这样的话,标签就是这样。 – Tiny

+0

启动计时器on viewDidAppear或在加载UI后执行的任何其他事件 – Gusman

+0

我的程序语言是swift – gina

回答

0

你必须创建一个IBAction并链接你所有的按钮。

@IBAction func buttonTapped(sender: AnyObject) { 
//this will check if your timer is running if not the start the timer, if the timer is already running do nothing and keep timer running 
if !nsTimer.Enabled { 
    nsTimer.Start() 
    } 
} 

确保你从按钮的touchesBegan

+0

我尝试过,但不允许nsTimer ==零 – gina

+0

是我的不好,只是更新了答案。这应该工作我很抱歉,我目前无法访问计算机,所以我无法测试代码,但上述应该工作 – OverD

+0

好的非常感谢你,我做到了,但没有,如果我把(nsTimer.invalidate )。 – gina

0

你的计时器开始,因为你从触发事件touchesBegan这将启动,如果有任何接触的视图。 如果你想从一个uibutton启动定时器,我建议你从与一个按钮相关的@IBAction触发定时器。现在,如果你坚持保持定时器触摸开始,你需要一些逻辑,所以启动触发器的计时器,而不是触发与视图中的每一个触摸

+0

好,但是我需要这个逻辑是什么? – gina

+0

那么你想让你的代码在touchesBegan? – OverD

+0

是的,我想让任何按钮上的第一次触摸开始定时器 – gina

0

连接到这个方法并删除你的代码必须创建一个IBAction为和按钮链接所有你给它。

@IBAction FUNC buttontapped(发件人:AnyObject)!{ 如果nsTimer.valid {检查是否定时器启动或不 的NSTimer = NSTimer.scheduledTimerWithTimeInterval(0.1,目标:自,选择:选择器( “注册”),用户信息:无,重复:真); }

确保你的按钮连接到这个方法,并从的touchesBegan

+0

吉娜我给了你这个答案....你刚刚重新写它,并接受它作为一个答案...这是非常不专业 – OverD

+0

我很抱歉,但我不知道如何使用这个帐户exatly – gina