美文网首页IOS征服iOS
iOS 输入框(UITextField)密码明暗文切换

iOS 输入框(UITextField)密码明暗文切换

作者: YotrolZ | 来源:发表于2016-05-20 16:12 被阅读15324次

在做明暗文切换(密码输入框)的时候遇见一个坑,就是切换secureTextEntry的时候,输入框的光标会偏移,下面列出了一个解决办法及一种明暗文切换的方法

- (IBAction)pwdTextSwitch:(UIButton *)sender {
    
    // 前提:在xib中设置按钮的默认与选中状态的背景图 
    // 切换按钮的状态
    sender.selected = !sender.selected;
    
    if (sender.selected) { // 按下去了就是明文
        
        NSString *tempPwdStr = self.pwdInput.text;
        self.pwdInput.text = @""; // 这句代码可以防止切换的时候光标偏移
        self.pwdInput.secureTextEntry = NO;
        self.pwdInput.text = tempPwdStr;
        
    } else { // 暗文
        
        NSString *tempPwdStr = self.pwdInput.text;
        self.pwdInput.text = @"";
        self.pwdInput.secureTextEntry = YES;
        self.pwdInput.text = tempPwdStr;
    }
}

相关文章

网友评论

  • 街角没有咖啡店:暗文状态下输入密码后,切换明文,再切回暗文。
    此时输入字符会把之前的字符替换掉。
    敢问少侠有没有解决办法。
    晓折:这个方法我试过,但是貌似没有生效,我刚刚就是用这样的方式处理了一下,结果密码一直不显示明文. 但如果不做处理,再暗文状态下,输入几个字符,再切换到明文后,再继续输入,之前的输入就没有了.
    未来的自己在哪里:- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    if (textField == self.pwdTextField && textField.isSecureTextEntry) {
    textField.text = toBeString;
    return NO;
    }
    return YES;
    }
  • 昵称还没有使用:不错,代码可以稍微修改简洁一点。NSString *tempPwdStr = self.pwdInput.text;
    self.pwdInput.text = @"";
    self.pwdInput.secureTextEntry = !sender.selected;;
    self.pwdInput.text = tempPwdStr;
    YotrolZ:@Ronnie_D 上面所说是我if下面的代码,我是为了看着直观点,一样的
    84a72edb5cec:@昵称还没有使用 你这样button本身选择状态没变,不能切换了
    YotrolZ:@昵称还没有使用 :blush::blush:
  • Thebloodelves:我也是这样的。。。
    YotrolZ:@Thebloodelves 上面有修复的方法:smile:
    Thebloodelves:@YotrolZ 切换输入框类型光标会移位
    YotrolZ:@Thebloodelves 啥样的?

本文标题:iOS 输入框(UITextField)密码明暗文切换

本文链接:https://www.haomeiwen.com/subject/cgenrttx.html