切换键盘类型清除TextField文本
问题描述:
我刚刚在我正在处理的应用程序中发现一个错误,这似乎是针对iOS 8的,但我找不出原因或解决方案,因此任何建议都将不胜感激。切换键盘类型清除TextField文本
问题是我有一个视图,用户输入密码。当文本字段处于活动状态时,最初我们会显示一个数字键盘,并在键盘上方有一个按钮以切换到字母键盘。以下是该按钮的按钮点击代码,以在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];`
问题是如果I型“123”到数字键盘,切换到QWERTY键盘,只要I型的单个字符,它清除原始输入,并用新的字符,而不是取代它追加它。我不确定为什么我的视图控制器中没有代码可以清除passcodeField中的文本。有没有人有任何想法可能造成这种情况?
在此先感谢...
答
您的文本字段是否安全? 如果是这样,我认为你的问题是呼吁resignFirstResponder
和becomeFirstResponder
。 这是安全文本字段的自然行为,当它激活时,它将删除以前输入的所有文本。
“这不是一个错误,它是一个功能!” :) – Vinzzz 2014-09-29 10:31:18
这不是一个很好的功能。这是一个安全的文本字段,所以这可能是问题所在。任何想法解决这个问题?如果我不让呼叫辞职并成为firstResponder,那么在iOS8中键盘不会改变,所以必须在那里。 – SeanT 2014-09-29 18:15:34
我完全理解你,我们有同样的问题,以编程方式从不安全模式切换到安全模式。当我搜索它时,没有“干净”的解决方案,但是在辞职前你总是可以记住文本,并在之后进行分配。 – hybridcattt 2014-09-30 10:27:28