2014-09-19 39 views
1

我刚刚在我正在处理的应用程序中发现一个错误,这似乎是针对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中的文本。有没有人有任何想法可能造成这种情况?

在此先感谢...

回答

0

您的文本字段是否安全? 如果是这样,我认为你的问题是呼吁resignFirstResponderbecomeFirstResponder。 这是安全文本字段的自然行为,当它激活时,它将删除以前输入的所有文本。

+0

“这不是一个错误,它是一个功能!” :) – Vinzzz 2014-09-29 10:31:18

+0

这不是一个很好的功能。这是一个安全的文本字段,所以这可能是问题所在。任何想法解决这个问题?如果我不让呼叫辞职并成为firstResponder,那么在iOS8中键盘不会改变,所以必须在那里。 – SeanT 2014-09-29 18:15:34

+0

我完全理解你,我们有同样的问题,以编程方式从不安全模式切换到安全模式。当我搜索它时,没有“干净”的解决方案,但是在辞职前你总是可以记住文本,并在之后进行分配。 – hybridcattt 2014-09-30 10:27:28