iOS中关于UITextField输入时更改输入文字的实现

有时候我们需要在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是无法获取到输入框的文字的哦~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容