以下是IBAction的代码,我想在点击后停用5秒钟。
@IBAction func postPressed(sender: AnyObject) {
//var disableMyButton = sender as? UIButton
//disableMyButton!.enabled = false
//NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector:"enableButton", userInfo: nil, repeats: false)
if(currLocation != nil){
let testObject = PFObject(className: "Hey")
testObject["text"] = self.postView.text
testObject["count"] = 0
testObject["replies"] = 0
testObject["location"] = PFGeoPoint(latitude: currLocation!.latitude , longitude: currLocation!.longitude)
testObject["comments"] = []
testObject["user"] = PFUser.currentUser()
testObject.saveInBackgroundWithBlock({ (success, error) -> Void in
if success {
self.dismissViewControllerAnimated(true , completion: nil)
if let completion = self.completion {
completion(self)
}
}
})
} else {
alert()
}
}
注释掉的代码是我尝试禁用按钮5秒钟,但是这段代码崩溃了,我相信它崩溃了,因为没有对启用按钮的引用。
通常我会做类似
的事情func enableButton() {
self.button.enabled = true
}
但是这不起作用,因为它是一个IBAction,除此之外没有对按钮的引用。也许有办法这样做,但我不知所措。
提前感谢您的帮助。
答案 0 :(得分:4)
试试这个,
例如:
EditText
答案 1 :(得分:1)
var disableMyButton = sender as? UIButton
disableMyButton!.enabled = false
testObject.saveInBackgroundWithBlock({ (success, error) -> Void in
if success {
self.dismissViewControllerAnimated(true , completion: nil)
if let completion = self.completion {
completion(self)
}
} else {
disableMyButton!.enabled = true
}
}
此外,根据completion(self)
的作用,您可能希望在关闭视图控制器之前执行此操作。我不知道。
答案 2 :(得分:1)
您可以使用调度框架添加延迟。使用主线程。
disableMyButton!.enabled = false
let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(5 * Double(NSEC_PER_SEC)))
dispatch_after(delay, dispatch_get_main_queue()) {
disableMyButton!.enabled = true
}
答案 3 :(得分:0)
SWIFT 5.2
在 UIButton Action 中放置以下代码:
yourButtonOutlet.isEnabled = false
//Delay function to enable your button for 3 seconds
Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(self.enablefunc), userInfo: nil, repeats: false)
然后在 UIButton func 之外放置:
@objc func enablefunc()
{
yourButtonOutlet.isEnabled = true
}