一尘不染

UITextField文本更改事件

swift

如何检测textField中的任何文本更改?委托方法shouldChangeCharactersInRange适用于某些东西,但不能完全满足我的需要。因为直到返回YES,否则textField文本不可用于其他观察者方法。

例如在我的代码calculateAndUpdateTextFields中没有得到更新的文本,用户已经输入了。

他们获得textChangedJava事件处理程序之类的方法是什么。

- (BOOL)textField:(UITextField *)textField 
            shouldChangeCharactersInRange:(NSRange)range 
            replacementString:(NSString *)string 
{
    if (textField.tag == kTextFieldTagSubtotal 
        || textField.tag == kTextFieldTagSubtotalDecimal
        || textField.tag == kTextFieldTagShipping
        || textField.tag == kTextFieldTagShippingDecimal) 
    {
        [self calculateAndUpdateTextFields];

    }

    return YES;
}

阅读 252

收藏
2020-07-07

共1个答案

一尘不染

正确的方式做uitextfield文本更改回调

我捕获了发送到UITextField控件的字符,如下所示:

// Add a "textFieldDidChange" notification method to the text field control.

在Objective-C中:

[textField addTarget:self 
              action:@selector(textFieldDidChange:) 
    forControlEvents:UIControlEventEditingChanged];

在Swift中:

textField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)

然后,在该textFieldDidChange方法中,您可以检查textField的内容,并根据需要重新加载表格视图。

您可以使用它,并将 calculateAndUpdateTextFields 用作您的selector

2020-07-07