1, 屏蔽第三方键盘问题解决 . 之所以要屏蔽掉第三方键盘是因为我们的验证码是1个文本框一个只能输入一个字符, 而且再输入完毕前一个数字后自动跳转到下一个输入框,这是如果是第三方数字键盘的话就会闪烁一下. 所以需要屏蔽掉第三方键盘. 而且我在做这个功能的时候参考了很多其他知名app ,也都会有这个问题. 解决方法目前只找到了这一种最合适的(但是我也使用了(禁用密文转明文的方法)不可行,因为要求输入数字键盘输入
所以解决方法只有是在登录时候禁用第三方键盘
func application(_ application: UIApplication, shouldAllowExtensionPointIdentifier extensionPointIdentifier: UIApplication.ExtensionPointIdentifier) -> Bool {
if Defaults.needLogin(这里是是否需要登录的判断) {
return true
}
return false
}
2.UITextField的secureTextEntry属性 和自定义光标tintColor红色 同时使用产生光标位置不对的问题.
要求安全输入, 光标黄色, 并且用户退出登录后,再次进入到登录界面后显示上次输入的.用户名. 因为密文是黑点显示, 我们最终需要明文显示.
1, 初始化输入框的时候
// 手机号
fileprivate lazy var phoneTextField: UITextField = {
let node = UITextField()
node.text = Defaults[.loginPhone]
node.tintColor = UIColor.clear
node.keyboardType = .numberPad
node.isSecureTextEntry = true
return node
}()
//再ViewDidLoad方法中, 注册通知, 再通知方法中, 奖tintColor修改为自定义颜色, 将密文更改为明文
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(show(noti:)), name: UIResponder.keyboardWillShowNotification, object: nil)
}
// 通知方法
@objc func show(noti: Notification) {
phoneTextField.isSecureTextEntry = false
let str = phoneTextField.text // 接收之前的文本框文字
phoneTextField.text = "" //将文本框内容清空
phoneTextField.text = str // 重新赋值给输入框内容, 目的是为了让光标位置显示正确
phoneTextField.tintColor = UIColor.red //设置为自己想要的光标颜色
}