0

在学习教程时,我预先判断了教程的下一步,并决定自己尝试。目标是将 IBAction 函数连接到触摸事件,这样一旦我们开始编辑 UITextField,它将更新 UILabel。我跳过了建议连接到连接检查器中的“编辑更改”选项的教程,但我在不知不觉中建立了与“编辑开始”的连接,因为它在口头上有意义。

我运行了应用程序,但我的 UILabel 没有更新。因此,我慢慢地重新阅读了教程,并注意到我需要使用“Editing Changed”触摸事件来代替。我想了解为什么它最初不起作用,所以在检查了 Apple 关于UIControlEvents的参考资料后,我注意到它使用了“编辑会话”一词。谁能解释一下什么是会话?

希望通过这种方式,我会理解为什么我的过程在第一次尝试时不起作用。

在此处输入图像描述

class ConversionViewController: UIViewController {
    @IBOutlet var celsiusLabel: UILabel!
    @IBAction func fahrenheitFieldEditingChanged(textField: UITextField){
        celsiusLabel.text = textField.text
    }
}

先感谢您

4

1 回答 1

2

“编辑会话”只是从用户开始与文本字段交互(文本字段获得焦点)到用户完成与文本字段交互(文本字段失去焦点)的时间。

换句话说,当用户点击文本字段时,(通常)会显示键盘,发送“Editing Did Begin”事件,然后会话开始。随着文本的更改(通过键入、剪切或粘贴),每次更改都会导致“Editing Changed”事件。当焦点离开文本字段时,键盘被解除,“Editing Did End”事件被发送,会话结束。

请注意,“编辑会话”只是一个高级概念。

您的代码在连接到“Editing Did Begin”事件时不起作用,因为发送该事件时文本字段没有改变。这是一个简单地告诉您文本字段现在具有焦点的事件。而已。

于 2017-10-25T17:27:05.053 回答