我编写此代码以在用户开始编辑UITextField
时选择所有文字:
@IBAction func onEditingBegin(_ sender: Any) {
print("editing began")
let textfield = sender as! UITextField
textfield.selectAll(nil)
}
但是只有在textfield.selectAll(nil)
块中包含DispatchQueue.main.async
行后才能生效:
DispatchQueue.main.async {
textfield.selectAll(nil)
}
为什么?
我在onEditingBegin()
中打印出了帖子的名称,这就是结果:
<NSThread: 0x60800006c880>{number = 1, name = main}
所以它似乎已经在主线程上被触发了,但是除非在textfield.selectAll()
块内部调用DispatchQueue.main.async
,否则代码仍然无效。
答案 0 :(得分:0)
'导致所有UI修改仅在主线程中发生......
如果您在其他线程中更改UI,则结果是不可预测的:它可能永远不会发生或稍后显示。