隐藏/显示UITextField密码,禁用更换键盘

在做登录的时候,项目中有个需求,做个密码显示/隐藏功能,但是呢,苹果只给了一个API,那就secureTextEntry.但是设置了此属性后,只能隐藏密码,当把secureTextEntry属性设置为NO时,键盘变成了可切换,就会导致一个很尴尬的局面...密码框可以使用中文了...

此时我们需要做的就是,显示密码的时候,仍然使用安全键盘,不允许切换即可

如今使用私有方法就做到了,上代码:

首先导入运行时头文件

#import <objc/message.h>

然后,设置button的selected样式为眼睛睁开,在显示密码的时候,改变按钮的状态,根据状态切换一个私有属性即可

- (void)showOrHiddenPassword:(UIButton *)sender {

//此方法调用为了修复导航栏会导致的一个小问题,不使用也不影响

//         [_passwordTextField resignFirstResponder];

         ((void(*)(id,SEL,BOOL))objc_msgSend)(_passwordTextField,NSSelectorFromString(@"setDisplaySecureTextUsingPlainText:"),!sender.isSelected);

          NSString* text = _passwordTextField.text;

         _passwordTextField.text = @"";

           _passwordTextField.text = text;

            sender.selected = !sender.isSelected;

}

需要将文字替换的原因是,如果设置完属性不更新文字的话,文字还会保持当前状态

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现cl...
    以德扶人阅读 2,542评论 2 50
  • 前言 节日的正面意义,大概是要提醒我们珍惜眼前人,感恩心中事。 当然,一不小心就会弄成,人面不知何处去,桃花依旧笑...
    萌妈育儿记阅读 406评论 4 6
  • 什么是费曼技巧 费曼技巧是一种以教促学的学习方法。 适用的学习内容 适用于概念和概念应用的学习例如XXX是什么,怎...
    eb116c5392b0阅读 1,563评论 0 2
  • 有时候,我们自己也表白不出来,我们自己也不明白,只知道圣灵在我们里面祷告祂所明白的。因为主垂听、祂爱、祂明白、祂接...
    Baron_0065阅读 163评论 0 0