You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Objective-C中如何切换密码输入显示状态且不清除已输入文本?

密码显隐切换文本清空问题解决方案

这是UITextField的系统默认安全机制,切换secureTextEntry属性时会自动清空已输入内容,只需在现有按钮动作逻辑中增加文本与光标暂存恢复逻辑即可解决,无需额外独立函数,修改后代码如下:

- (IBAction)showHidePassword:(id)sender {
    // 暂存当前输入内容与光标选中范围
    NSString *originalText = self.passTextField.text;
    UITextRange *selectedRange = self.passTextField.selectedTextRange;
    
    // 切换密文显示状态
    self.passTextField.secureTextEntry = !self.passTextField.secureTextEntry;
    
    // 恢复输入内容与光标位置
    self.passTextField.text = originalText;
    self.passTextField.selectedTextRange = selectedRange;
    
    // 切换按钮图标
    UIImage *btnImage = self.passTextField.secureTextEntry ? [UIImage systemImageNamed:@"eye"] : [UIImage systemImageNamed:@"eye.fill"];
    [self.toggleBTN setImage:btnImage forState:UIControlStateNormal];
}

如果不需要使用原生secureTextEntry属性,也可通过UITextField代理方法手动将输入字符替换为圆点实现密文效果,但该方案需要额外处理删除逻辑、光标定位、剪切板安全等问题,安全性和开发成本都不如原生属性适配方案,更推荐使用上述修改方案。

内容的提问来源于stack exchange,提问作者Jas Har

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:06:07