有时候我们需要在UITextField
输入文字的同时修改UITextField
的文字,这种需求应该怎么实现呢?
其实OC中关于UITextField
的文档中已经告诉我们了,可以通过以下方法来控制输入框的文本实现。当以下方法返回NO时,代表当前通过键盘输入的文字不会显示在输入框中。
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string; // return NO to not change text
那既然知道了方法,剩下的就是如何实现了,这里举个例子:
我们都知道,切换输入框的明文/密文时,此时输入框的文字会自动清空,但是需求是切换明文/密文时不能清空输入框,就可以通过该代理方法实现该功能:
// 明文切换密文后避免被清空
// 是密码框 并且 是密文状态
if (textField == self.textField && textField.isSecureTextEntry) {
NSString *secureString = [textField.text stringByReplacingCharactersInRange:range withString:string];
textField.text = secureString;
// 返回NO表示 舍弃 通过这个代理方法 改变 UITextField的文本内容
return NO;
}
需要注意的是:
在
shouldChangeCharactersInRange
方法内必须使用stringByReplacingCharactersInRange
这个方法来获取输入框的文本,直接使用textField.text
是无法获取到输入框的文字的哦~