gpt4 book ai didi

ios - shouldChangeCharactersInRange 如何在 Swift 中工作?

转载 作者:IT老高 更新时间:2023-10-28 11:26:51 26 4
gpt4 key购买 nike

我正在使用 shouldChangeCharactersInRange 作为使用动态类型搜索的一种方式。

但是我遇到了一个问题,shouldChangeCharactersInRange 在文本字段实际更新之前被调用:

在 Objective C 中,我使用以下方法解决了这个问题:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString * searchStr = [textField.text stringByReplacingCharactersInRange:range withString:string];

return YES;
}

但是,我尝试用 Swift 编写这个:

func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool {
let txtAfterUpdate:NSString = self.projectSearchTxtFld.text as NSString
txtAfterUpdate.stringByReplacingCharactersInRange(range, withString: string)

self.callMyMethod(txtAfterUpdate)
return true
}

在我得到一个值之前该方法仍然被调用?

最佳答案

swift 4、 swift 5

此方法不使用 NSString

// MARK: - UITextFieldDelegate

extension MyViewController: UITextFieldDelegate {
func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool {
if let text = textField.text,
let textRange = Range(range, in: text) {
let updatedText = text.replacingCharacters(in: textRange,
with: string)
myvalidator(text: updatedText)
}
return true
}
}

注意。使用安全文本字段时要小心。

关于ios - shouldChangeCharactersInRange 如何在 Swift 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25621496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com