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

这是我在点击特定按钮时调用的函数,如您所见,我正在尝试更改某些按钮上的标题和 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 秒的延迟。无论我是在单个按钮还是 26 个按钮上调用 setTitle 都没有关系,标题实际更改之前总是存在延迟。

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

最佳答案

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

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

关于ios - 在 Swift 中在 UIButton 上使用 setTitle 时出现延迟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25494025/

10-11 22:46