小编Chr*_*dez的帖子

在Swift中,如何检测哪些UIControlEvents触发了该操作?

我目前有4个UITextField

@IBOutlet weak var fNameTextField: UITextField!
@IBOutlet weak var lNameTextField: UITextField!
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var phoneTextField: UITextField!
Run Code Online (Sandbox Code Playgroud)

我想跟踪他们的各种事件:

[UIControlEvents.EditingChanged, UIControlEvents.EditingDidBegin, UIControlEvents.EditingDidEnd ]
Run Code Online (Sandbox Code Playgroud)

但是我不希望有3个事件单独的事件处理程序,所以我创建了一个这样的函数.这个函数很好地告诉我哪个UITextField触发了一个事件,但它没有告诉我哪个事件被触发:

fNameTextField.addTarget(self, action: "onChangeTextField:", forControlEvents: UIControlEvents.AllTouchEvents)
lNameTextField.addTarget(self, action: "onChangeTextField:", forControlEvents: UIControlEvents.AllTouchEvents)
emailTextField.addTarget(self, action: "onChangeTextField:", forControlEvents: UIControlEvents.AllTouchEvents)
phoneTextField.addTarget(self, action: "onChangeTextField:", forControlEvents: UIControlEvents.AllTouchEvents)

func onChangeTextField(sender:UITextField){
    switch(sender){
        case fNameTextField:
            print("First Name")
        case lNameTextField:
            print("Last Name")
        case emailTextField:
            print("E-mail")
        case phoneTextField:
            print("Phone")
        default: break
    }
}
Run Code Online (Sandbox Code Playgroud)

如何打印发件人姓名和触发事件的名称(例如:.EditingDidEnd,.EditingDidEnd,.EditingDidEnd)?

理想情况下,我不想编写多个事件处理程序,我更喜欢单个函数.

像这样的东西:

func onChangeTextField(sender:UITextField){
    switch(sender.eventTriggerd){
        case UIControlEvents.EditingChanged:
            println("EditingChanged")
        case UIControlEvents.EditingDidBegin:
            println("EditingDidBegin") …
Run Code Online (Sandbox Code Playgroud)

events uitextfield ios swift

3
推荐指数
1
解决办法
2148
查看次数

标签 统计

events ×1

ios ×1

swift ×1

uitextfield ×1