在UIButton上设置一个计时器,使其在延迟后生效?

时间:2015-08-06 06:17:36

标签: ios swift uibutton viewcontroller

我希望为我在Swift中编写的游戏的用户体验添加一些最后的润色。目前我有一个gameVerViewController在游戏结束时被激活,在该屏幕上,分数和高分数会在几秒钟后显示插页式广告。

我还有一个replay UIButton,可以展开segue并重新开始游戏。

我正在寻找的是重放按钮上的计时器,该按钮会在三秒钟后激活按钮,类似于您在插页式广告中看到的内容,您可以在与广告进行任何互动之前看到秒数倒计时对象。

---------------更新了代码

再次问好,

我已经部分地使代码工作了,UIButton已经使用我gameOverViewController文件中的以下代码取消选中它的可访问性框。

class GameOverViewController: UIViewController {

@IBOutlet weak var button: UIButton!

}

override func viewDidLoad() {
    super.viewDidLoad()

            self.button.enabled = false
    NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: "enableButton", userInfo: nil, repeats: false)

//lots of code here to bring up google interstitial advert

}

func enableButton() {
    self.button.enabled = true
}

按钮被正确地显示为灰色三秒钟然后变为蓝色,但是一旦点击viewController挂起然后崩溃。该错误会导致AppDelegate出现SIGABRT错误。这是输出字段的摘录...

20  libdyld.dylib                       0x0000000105fa5145 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

该按钮是segue的一部分,一旦按下就会将ViewController更改回GameViewController,这是GameViewController上的代码

    @IBAction func replay(segue: UIStoryboardSegue) {
}

如果没有在三秒钟后启用按钮的代码,则重放工作正常。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您最初可以停用重播按钮,然后使用performSelector:AfterDelay启用它。

答案 1 :(得分:0)

你可以做的是使用NSTimer倒数3秒,每秒钟,用一个剩下当前秒数的按钮替换按钮。要在此期间使按钮处于非活动状态,您可以使用小于1的alpha(出于可视目的)并禁用用户与其的交互。希望有所帮助!如果您在编写代码时需要帮助,我可以提供帮助。