如何在swift4中单击按钮时触发文本框的editchanged事件

问题描述 投票:1回答:3

我知道文本框的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!
    }
}
ios swift xcode
3个回答
0
投票

您可以在一个函数中编辑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()
}

0
投票

您无法以编程方式触发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()
    }
}

0
投票

您不需要编写新函数 - 您可以从代码中调用现有的编辑更改函数:

@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
}
© www.soinside.com 2019 - 2024. All rights reserved.