斯威夫特:按钮没有响应轻按

问题描述:

嘿所以我是新来的编码,我在我的视图控制器(拖放)上放置一个按钮。该按钮没有响应触摸或任何内容,并显示为“静态”。我累了,精疲力竭。有人帮忙?非常感谢!斯威夫特:按钮没有响应轻按

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var lbl1: UILabel! 
    @IBOutlet weak var lblMadeToday: UILabel! 

    @IBOutlet weak var Cents: UILabel! 
    var timer = NSTimer() 
    var hourlyWage : CGFloat = CGFloat (hourlyPrice) 
    var timeTo1 : CGFloat = 0 
    var time : Float = 0 
    var earnt : CGFloat = 0 
    var madeToday : CGFloat = 0 

    @IBAction func btnClick(sender: AnyObject) { 

    } 

    func tick() { 
    earnt = CGFloat (time)/timeTo1 
    lbl1.text = NSString(format: "%.2f", earnt) as String 


     if (earnt >= 1) { 
      time = 0 
      madeToday++ 
      lblMadeToday.text = madeToday.description 
     } 
     time++ 
    } 


    override func viewDidLoad() { 
     super.viewDidLoad() 
     timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: Selector("tick"), userInfo: nil, repeats: true) 
     timeTo1 = CGFloat (360000)/hourlyWage; 

     println("view Loaded :)") 
     NSNotificationCenter.defaultCenter().addObserver(self, selector:"doYourStuff", name: 
      UIApplicationWillEnterForegroundNotification, object: nil) 
    } 


    func doYourStuff(){ 
     var nowHour = NSCalendar.currentCalendar().component(.CalendarUnitHour, fromDate: NSDate()) 
     var nowMinute = NSCalendar.currentCalendar().component(.CalendarUnitMinute, fromDate: NSDate()) 
     var nowSecond = NSCalendar.currentCalendar().component(.CalendarUnitSecond, fromDate: NSDate()) 

     var time1 = (nowHour - globalHour) * 60 
     var time2 = (nowMinute - globalMinute) 
     var time3 : CGFloat = (CGFloat(nowSecond)-CGFloat(globalSecond))/60 
     var timeInMinutesGone : CGFloat = CGFloat(time1) + CGFloat(time2) + CGFloat(time3) 
     println (timeInMinutesGone) 
     madeToday = (timeInMinutesGone/60) * (CGFloat(hourlyWage)) 
     var ef : Int = Int(madeToday) 
     lblMadeToday.text = String(ef) 
    } 

    @IBAction func btnPress(sender: AnyObject) { 
     println("hello") 
    } 
    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 
+0

IBAction为FUNC btnPress,IBAction为FUNC btnClick。为什么你有两个ibactions?他们链接到相同的UIButton? – agy

+0

删除所有IBAction Funcs后,我重新运行应用程序,并且该按钮仍然不会突出显示:/是否存在阻止视图控制器操作的内容?或者是否有定时器引起的处理过载? :/ –

+0

尝试在IBAction函数中放置打印语句。单击时查看它是否在控制台中。 – rholmes

您的NSTimer正在UI线程中每0.01秒执行一次。这可能对您的应用程序不利。如果您在后台线程中执行NSTimer,您的按钮可能会按预期工作。

的一种方式您的NSTimer添加到背景可能是:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {() -> Void in 

    let timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: Selector("tick"), userInfo: nil, repeats: true) 
    NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSDefaultRunLoopMode) 
    NSRunLoop.currentRunLoop().run() 
}) 
+0

非常感谢! :)我如何在后台线程中执行此操作?非常感谢!我是新来的,所以请尽可能简单:) –

+0

@LouisJordan,它为你工作吗? – agy

+0

Omg是的非常感谢你! :)你是如此有帮助 - 我需要找到这个东西的在线课程哈哈我看着udemy –