iOS输入框资料iOS常用功能和UI效果的实现UITextFiled

iOS UITextField 明/密文切换的一些坑

2016-06-16  本文已影响2215人  天蝎洋芋

最近在项目中需要使用UITextField作为密码输入框,并进行明文/密文切换。在进行代码编写的时候,遇到了一些问题。现将这些问题记录下来,供大家参考。

NO.1 明/密文切换时,文本长度会改变,而光标的位置不跟随文本的改变而改变。

密文状态 明文状态

解决方法1: 点击按钮切换明/密文时,让UITextField变成第一响应。

[self.textField becomeFirstResponder];

解决方法2:点击按钮切换明/密文时,保存UITextField的text属性值。将其置空再赋值。

NSString*textStr =self.textField.text;

self.textField.text=@"";

self.textField.text= textStr;

使用后切换到明文状态时

NO.2 明/密文切换时,文本字体会改变。

正常状态下的文本显示 从密文切换到明文的文本显示

解决方法:点击按钮切换明/密文时,设置UITextField字体为原字体。

self.textField.font=nil;

self.textField.font= [UIFontsystemFontOfSize:16];

NO.3 UITextField经过 密文->明文->密文 的过程后,再输入之前的文本会被清空。

解决方法:设置UITextField的delegate,在下面的代理方法中控制文本的改变。

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string{

NSString*allStr = [textField.textstringByReplacingCharactersInRange:rangewithString:string];

if(textField.isSecureTextEntry==YES) {

textField.text= allStr;

returnNO;

}

returnYES;

}

结尾附上Demo地址:https://github.com/wfalloc/UITextFieldBug.git

上一篇下一篇

猜你喜欢

热点阅读