我在secureEntry
上切换UITextField
属性时遇到问题。切换属性时,将调整字符大小,但光标位于错误的位置:
答案 0 :(得分:4)
以下是我的解决方法:
textField.secureTextEntry = YES;
UITextRange *textRange = textField.selectedTextRange;
textField.selectedTextRange = nil;
textField.selectedTextRange = textRange;
禁用然后启用UITextField也有帮助,但它会突然将我的软键盘从一个改为另一个
答案 1 :(得分:4)
设置textField secureEntry
属性NO
后,您需要调用becomeFirstResponder
方法,它对我有用...
试试这个
textField.secureTextEntry = NO;
if (textField.isFirstResponder){
[textField becomeFirstResponder];
}
答案 2 :(得分:3)
两者都在为Swift 4工作
self.isSecureTextEntry = false
if textField.isFirstResponder {
textField.becomeFirstResponder()
textField.layoutIfNeeded()
}
我必须添加textField.layoutIfNeeded()
它适用于Swift或使用
let textRange = self.selectedTextRange
self.selectedTextRange = nil;
self.selectedTextRange = textRange
答案 3 :(得分:1)
对于Swift 4
@objc func tapOnLeftIcon(gesture: UITapGestureRecognizer) {
let textRange = textField.selectedTextRange
textField.isSecureTextEntry = !textField.isSecureTextEntry
textField.selectedTextRange = nil
textField.selectedTextRange = textRange
}