在Swift中在UIButton上使用setTitle时出现延迟

时间:2014-08-25 20:39:25

标签: ios swift uibutton title

我正在使用自定义键盘,当我尝试更改按钮的标题时,我遇到了问题。

这是我在点击特定按钮时调用的函数,因为您可以看到我试图在某些按钮上更改标题以及outputText(我声明的变量)。

func numericsSelected() {

if button01.titleForState(.Normal) == "Q"   {

        button01.outputText = "1"
        button01.setTitle("1", forState: .Normal) // This causes a delay
        button02.outputText = "2"
        button02.setTitle("2", forState: .Normal)
        button03.outputText = "3"
        button03.setTitle("3", forState: .Normal)
    }
}

更改outputText变量时没有问题,但是,当我的numericsSelected()函数被调用时,我在setTitle对按钮生效之前经历了1秒的延迟。无论我是在单个按钮上调用setTitle还是26个按钮,在标题实际更改之前总会有延迟。

我在更新UI时读到了提及线程的日期答案,不确定这是否相关。 任何帮助将非常感激。

1 个答案:

答案 0 :(得分:2)

我终于找到了延迟的原因。

每次使用setTitle:forState时都会调用viewWillLayoutSubviews,因为我在该函数中有一些自定义代码,所以每次使用setTitle:forState时都会运行它。