我刚刚发现我正在处理的应用中的一个错误似乎是针对iOS 8的,但我无法找出原因或解决方案,因此任何建议都会非常感激。
问题是我有一个用户输入密码的视图。当文本字段处于活动状态时,最初我们会显示一个数字键盘,键盘上方有一个按钮可切换到字母键盘。这是按钮的代码,用于在该按钮上切换qwerty键盘和数字键盘。
`UIButton * toggleButton = sender;
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0f)
{
[self.passcodeField resignFirstResponder];
}
if (self.passcodeField.keyboardType == UIKeyboardTypeNumberPad) {
self.passcodeField.keyboardType = UIKeyboardTypeNamePhonePad;
[toggleButton setTitle: @"123" forState:UIControlStateNormal];
}
else {
self.passcodeField.keyboardType = UIKeyboardTypeNumberPad;
[toggleButton setTitle: @"ABC" forState:UIControlStateNormal];
}
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0f)
{
[self.passcodeField becomeFirstResponder];
}
[self.passcodeField reloadInputViews];`
问题是如果我键入" 123"进入数字键盘,切换到qwerty键盘,一旦我输入单个字符,它就会清除原始输入并用新字符替换它而不是附加它。我不确定为什么因为我的视图控制器中没有代码可以清除passcodeField中的文本。有谁知道造成这种情况的原因是什么?
提前致谢...
答案 0 :(得分:0)
您的文字字段是否安全?
如果是这样,我认为您的问题在于调用resignFirstResponder
和becomeFirstResponder
。
这是安全文本字段的自然行为,当它激活时会删除先前输入的所有文本。