代码之家  ›  专栏  ›  技术社区  ›  Laurence Wingo

术语“session”在UIControlEvent对象的editingdidbegen属性的外行术语中是什么意思?

  •  0
  • Laurence Wingo  · 技术社区  · 7 年前

    在学习教程时,我预先判断了教程的下一步,并决定自己尝试。目标是将IBAction功能连接到触摸事件,这样一旦我们开始编辑UITextField,它就会更新UILabel。我跳过了建议连接到connections inspector中的“Editing Changed”(编辑已更改)选项的教程,但我无意中连接到了“Editing Doe Begin”(编辑确实开始),因为这在口头上是有意义的。

    我运行了应用程序,但我的UILabel没有更新。因此,我慢慢地重新阅读了教程,并注意到我需要使用“编辑更改”触摸事件。在查看了苹果的参考资料后,我想知道为什么它最初不起作用 UIControlEvents ,我注意到它使用了术语“编辑会话”。有人能解释一下会话是什么吗?

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

    enter image description here

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

    提前谢谢你

    1 回复  |  直到 7 年前
        1
  •  2
  •   rmaddy    7 年前

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

    换句话说,当用户点击文本字段时,会显示键盘(通常),发送“编辑确实开始”事件,会话开始。随着文本的更改(通过键入、剪切或粘贴),每次更改都会导致“编辑更改”事件。当焦点离开文本字段时,键盘被关闭,发送“编辑结束”事件,会话结束。

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

    您的代码在连接到“Editing Did Begin”事件时无法工作,因为发送该事件时文本字段没有更改。这是一个简单地告诉你文本字段现在有焦点的事件。就是这样。