我用iOS
编写了一个Swift 4
应用,我是法语,所以我使用法语/法语区域的手机。
在iOS 12设备上,我的登录页面上的密码字段运行得非常好(使用保存的密码自动登录甚至可以正常工作,而我并没有采取任何措施使此工作正常进行),但是在我的注册页面上,该字段使我的键盘从AZERTY切换到QWERTY。
我的手机设置中只有AZERTY键盘,并且它在所有iOS 12设备上都会发生,而不仅仅是我的...
我在代码中所做的唯一一件事:(我的UIView
文件名为RegisterView.swift)
fieldPwd = UITextField()
fieldPwdConfirm = UITextField()
fieldPwd.isSecureTextEntry = true
fieldPwdConfirm.isSecureTextEntry = true
此问题是否有解决方法?谢谢!
答案 0 :(得分:1)
我为我的项目找到了解决方案,也许可以帮助某人。
我注意到了:
UITextField
)中,键盘为AZERTY UITextField
)中,键盘为QWERTY UITextField
)中,键盘是AZERTY 在登录页面和帐户页面之间进行了一段时间的比较之后,我意识到在我的帐户页面中,安全文本字段之前的文本字段是.numberPad
文本字段。
因此,在我的登录xib文件中,我已将安全文本字段设置为.numberPad
,并在.default
中将其设置为textFieldDidBeginEditing
。然后在.numberPad
中再次返回textFieldDidEndEditing
,因为如果没有,键盘将第二次出现在QWERTY中。现在,我的安全文本字段位于AZERTY。
func textFieldDidBeginEditing(_ textField: UITextField) {
if ( textField == pwdTextField || textField == pwd2TextField ) {
textField.keyboardType = .default;
}
// do other stuffs
}
func textFieldDidEndEditing(_ textField: UITextField) {
if ( textField == pwdTextField || textField == pwd2TextField ) {
textField.keyboardType = .numberPad;
}
// do other stuffs
}
@。@
答案 1 :(得分:1)
这是因为应用默认区域设置。 从info.plist中删除以下设置。
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>fr</string>
...
</dict>
干杯...
答案 2 :(得分:0)
实际上,使用2个密码内容类型文本字段(例如,当用户必须确认新密码时)会导致键盘出现问题。如此处所述,键盘设置为QWERTY,而应该设置为AZERTY(使用我使用的语言),当我从一个文本字段转到另一个文本字段时,键盘会闪烁。
实际上,不需要为密码文本字段设置此内容类型,两个文本字段都使用“新密码”内容类型就可以了,并且不会对键盘造成任何问题。
答案 3 :(得分:0)
同一问题在这里: https://github.com/xlbs-rm/ios-demo
在此处填写了错误报告:https://feedbackassistant.apple.com/日期2020-07-31
苹果公司尚未做出任何反应 在iOS 13.5.1、13.7、12.4.3发行 有关连接设备(调试),模拟器,TestFlight Alpha版本(适用于iTunesConnect用户),TestFlight Beta版本(Apple认可的TestFlight版本)的问题
只有解决方案是删除第二个密码字段!
想法#2 textContentType = .oneTimeCode 建议此处:https://stackoverflow.com/a/53760545
if #available(iOS 12.0, *) {
tfPassword.textContentType = .oneTimeCode
}
想法#3删除CFBundleDevelopmentRegion
想法#4进入UITextField,重写textInputMode以正确的lang返回一个 类似于此处:https://stackoverflow.com/a/52701639
解决方案:
if #available(iOS 12.0, *) {
passInput.textContentType = .newPassword
}
实施:UITextFieldDelegate
public func textFieldDidBeginEditing(_ textField: UITextField) {
if exchangeResponder == false {
exchangeResponder = true
firstnameInput.becomeFirstResponder()
textField.becomeFirstResponder()
exchangeResponder = false
}
}
passInput.delegate = self
pass2Input.delegate = self
现在我可以在所有字段之间移动,并且每次都有德语键盘即可!