我知道文本框的editchanged事件,当我使用mac的键盘更改文本框中的文本时,它正常工作,但我已经创建了数字按钮,当我使用按钮更改文本时,不会触发文本框的editchanged。
这是我的按钮事件
@IBAction func digitbuttonpress(_ sender: UIButton)
{
if(text1.isFirstResponder)
{
text1.text = text1.text! + sender.titleLabel!.text!
}
else if(text2.isFirstResponder)
{
text2.text = text2.text! + sender.titleLabel!.text!
}
}
您可以在一个函数中编辑editChanged中的代码,例如sharedTrigger
,并从任何地方调用它
@IBAction func digitbuttonpress(_ sender: UIButton)
{
if(text1.isFirstResponder)
{
text1.text = text1.text! + sender.titleLabel!.text!
}
else if(text2.isFirstResponder)
{
text2.text = text2.text! + sender.titleLabel!.text!
}
self.sharedTrigger()
}
您无法以编程方式触发editChanged
事件,该事件发生在用户编辑textField
(而不是textBox)时。
无论你想在事件发生后做什么,你都必须从digitbuttonpress
以编程方式调用它:
@IBAction func digitbuttonpress(_ sender: UIButton) {
if(text1.isFirstResponder) {
text1.text = text1.text! + sender.titleLabel!.text!
// explicitly call the handler
self.text1EditChangedHandler()
} else if(text2.isFirstResponder) {
text2.text = text2.text! + sender.titleLabel!.text!
// explicitly call the handler
self.text2EditChangedHandler()
}
}
您不需要编写新函数 - 您可以从代码中调用现有的编辑更改函数:
@IBAction func digitbuttonpress(_ sender: UIButton) {
if(text1.isFirstResponder)
{
text1.text = text1.text! + sender.titleLabel!.text!
editChanged(text1)
}
else if(text2.isFirstResponder)
{
text2.text = text2.text! + sender.titleLabel!.text!
editChanged(text2)
}
}
@IBAction func editChanged(_ sender: Any) {
print("Text Changed", sender)
// do whatever else you want to do here
}