【问题标题】:Delay when using setTitle on UIButton in Swift在 Swift 中的 UIButton 上使用 setTitle 时延迟
【发布时间】:2014-08-25 20:39:24
【问题描述】:

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

这是我在点击特定按钮时调用的函数,如您所见,我正在尝试更改某些按钮上的标题和 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 时阅读了一个提到线程的过时答案,但不确定这是否相关。 任何帮助将非常感激。

【问题讨论】:

  • 我已经尝试了以下方法: dispatch_async(dispatch_get_main_queue(), { self.numericsSelected() }) 仍然没有运气。有趣的是,延迟不会在 iOS 模拟器中发生,仅在设备上发生。
  • 我什至尝试使用 setNeedsDisplay,但没有。真的很绝望。

标签: ios swift uibutton title


【解决方案1】:

我终于弄清楚了延迟的原因。

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

【讨论】:

    猜你喜欢
    • 2015-12-22
    • 2017-12-16
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多