切换keyboardType清除TextField文本

时间:2014-09-19 22:14:37

标签: ios objective-c iphone xcode ios8

我刚刚发现我正在处理的应用中的一个错误似乎是针对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中的文本。有谁知道造成这种情况的原因是什么?

提前致谢...

1 个答案:

答案 0 :(得分:0)

您的文字字段是否安全? 如果是这样,我认为您的问题在于调用resignFirstResponderbecomeFirstResponder。 这是安全文本字段的自然行为,当它激活时会删除先前输入的所有文本。