斯威夫特:按钮没有响应轻按
嘿所以我是新来的编码,我在我的视图控制器(拖放)上放置一个按钮。该按钮没有响应触摸或任何内容,并显示为“静态”。我累了,精疲力竭。有人帮忙?非常感谢!斯威夫特:按钮没有响应轻按
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.
}
}
您的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()
})
非常感谢! :)我如何在后台线程中执行此操作?非常感谢!我是新来的,所以请尽可能简单:) –
@LouisJordan,它为你工作吗? – agy
Omg是的非常感谢你! :)你是如此有帮助 - 我需要找到这个东西的在线课程哈哈我看着udemy –
IBAction为FUNC btnPress,IBAction为FUNC btnClick。为什么你有两个ibactions?他们链接到相同的UIButton? – agy
删除所有IBAction Funcs后,我重新运行应用程序,并且该按钮仍然不会突出显示:/是否存在阻止视图控制器操作的内容?或者是否有定时器引起的处理过载? :/ –
尝试在IBAction函数中放置打印语句。单击时查看它是否在控制台中。 – rholmes