触摸文本框不起作用
textfield on touch not working
我正在尝试在 UITextField 上设置 ontouch 侦听器,但它根本不起作用这是我的代码:
class SettingsVC: BaseVC {
@IBOutlet weak var languageField: SkyFloatingLabelTextField!
@IBOutlet weak var btnburgerMenu: UIButton!
@IBOutlet weak var headerLbl: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
languageField.addTarget(self, action: "myTargetFunction:", for: UIControlEvents.touchDown)
}
func myTargetFunction(textField: SkyFloatingLabelTextField) {
print("test")
}
}
这是我遇到的错误
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[IFO.SettingsVC myTargetFunction:]: unrecognized selector sent to instance 0x7fac8b61ff30'
异常原因是什么?
应该是这样的-
languageField.addTarget(self, action: #selector(YourViewController.myTargetFunction(sender:)), for: UIControlEvents.touchDown)
或使用类似
languageField.addTarget(self, action: #selector(self.myTargetFunction(_:)), forControlEvents: .touchDown)
并像
一样调用函数
func myTargetFunction(_ textField: SkyFloatingLabelTextField) {
print("test")
}
.touchDown 实际上没什么用,因为它并不总是触发。每次触摸 UITextField 时,我都需要一种对话框出现的方法。我改用这个:
class DateTextField: DefaultTextField, UITextFieldDelegate {
...
override init() {
super.init()
self.delegate = self // delegate to handle textFieldShouldBeginEditing below
inputView = UIView() // disable the input view
}
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
// Code to display my date picker dialog
return false // return false to disable textfield editing
}
}
我正在尝试在 UITextField 上设置 ontouch 侦听器,但它根本不起作用这是我的代码:
class SettingsVC: BaseVC {
@IBOutlet weak var languageField: SkyFloatingLabelTextField!
@IBOutlet weak var btnburgerMenu: UIButton!
@IBOutlet weak var headerLbl: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
languageField.addTarget(self, action: "myTargetFunction:", for: UIControlEvents.touchDown)
}
func myTargetFunction(textField: SkyFloatingLabelTextField) {
print("test")
}
}
这是我遇到的错误
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[IFO.SettingsVC myTargetFunction:]: unrecognized selector sent to instance 0x7fac8b61ff30'
异常原因是什么?
应该是这样的-
languageField.addTarget(self, action: #selector(YourViewController.myTargetFunction(sender:)), for: UIControlEvents.touchDown)
或使用类似
languageField.addTarget(self, action: #selector(self.myTargetFunction(_:)), forControlEvents: .touchDown)
并像
一样调用函数func myTargetFunction(_ textField: SkyFloatingLabelTextField) {
print("test")
}
.touchDown 实际上没什么用,因为它并不总是触发。每次触摸 UITextField 时,我都需要一种对话框出现的方法。我改用这个:
class DateTextField: DefaultTextField, UITextFieldDelegate {
...
override init() {
super.init()
self.delegate = self // delegate to handle textFieldShouldBeginEditing below
inputView = UIView() // disable the input view
}
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
// Code to display my date picker dialog
return false // return false to disable textfield editing
}
}