以上说明了一切 - 我将UITextField设置为安全,但希望为用户提供使其不安全的选项(这样他们就可以确定如果他们在私有区域中输入了什么).但是,假设他们错误地点击了切换,并希望将其更改回安全模式?这不起作用.我已经尝试了一切 - 使用-1而不是YES,删除文本然后将其放回去.我完全失去了其他想法.[输入rdar:// 9781908]
编辑:我认为这个问题从iOS5开始修复.
小智 47
它必须是输入焦点问题:当聚焦时,UITextField只能改变ON-> OFF.
尝试下一个技巧切换OFF-> ON:
textField.enabled = NO;
textField.secureTextEntry = YES;
textField.enabled = YES;
[textField becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)
编辑(dhoerl):在iOS 9.3中,我发现这有效,但是有一个问题.如果在普通视图中输入3个字符,则切换到安全文本,然后键入字符,3个预先存在的字符将消失.我尝试了各种技巧来清除,然后重置文本但没有成功.我终于尝试通过切割和粘贴来控制控件 - 粘贴到新切换到安全模式的工作非常棒.所以我在代码中模拟它,现在一切正常 - 不需要和响应者一起玩.这是我最终得到的结果:
if textview should go into secure mode and the textfield is not empty {
textField.text = ""
textField.secureTextEntry = true
UIPasteboard.generalPasteboard().string = password
textField.paste(self)
UIPasteboard.generalPasteboard().string = ""
}
Run Code Online (Sandbox Code Playgroud)
我宁愿不必这样做,但如果你想要它无缝,这是我能找到它的唯一方法.
San*_*ndy 23
Mike R的解决方案很不错,但我更喜欢这种方法:
BOOL wasFirstResponder;
if ((wasFirstResponder = [passwordField isFirstResponder])) {
[passwordField resignFirstResponder];
}
// In this example, there is a "show password" toggle
[passwordField setSecureTextEntry:![passwordField isSecureTextEntry]];
if (wasFirstResponder) {
[passwordField becomeFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
这样你只在必要时再次成为FirstResponder.
| 归档时间: |
|
| 查看次数: |
22534 次 |
| 最近记录: |