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

时间:2018-03-02 14:01:26

标签: ios swift xcode

我知道文本框的editchanged事件,当我使用mac的键盘更改文本框中的文本时,它正常工作但是我已经创建了数字按钮,当我使用按钮更改文本时,textbox的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!
    }
}

3 个答案:

答案 0 :(得分: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()
}

答案 1 :(得分: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()
    }
}

答案 2 :(得分: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
}