Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 切换键盘类型清除文本字段文本_Ios_Objective C_Iphone_Xcode_Ios8 - Fatal编程技术网

Ios 切换键盘类型清除文本字段文本

Ios 切换键盘类型清除文本字段文本,ios,objective-c,iphone,xcode,ios8,Ios,Objective C,Iphone,Xcode,Ios8,我刚刚在我正在开发的一个应用程序中发现了一个bug,它似乎是iOS 8特有的,但我无法找出原因或解决方案,因此任何建议都将不胜感激 问题是我有一个用户输入密码的视图。当文本字段处于活动状态时,最初我们会显示一个数字键盘,键盘上方有一个按钮,用于切换到字母键盘。下面是该按钮的代码,用于在qwerty键盘和数字键盘之间切换 `UIButton*toggleButton=发送方 if ([[UIDevice currentDevice].systemVersion floatValue] >=

我刚刚在我正在开发的一个应用程序中发现了一个bug,它似乎是iOS 8特有的,但我无法找出原因或解决方案,因此任何建议都将不胜感激

问题是我有一个用户输入密码的视图。当文本字段处于活动状态时,最初我们会显示一个数字键盘,键盘上方有一个按钮,用于切换到字母键盘。下面是该按钮的代码,用于在qwerty键盘和数字键盘之间切换

`UIButton*toggleButton=发送方

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中文本的代码。有人知道这是什么原因吗

提前感谢…

您的文本字段安全吗? 如果是这样,我认为您的问题在于调用
resignFirstResponder
成为firstresponder

这是安全文本字段的自然行为,当它激活时,它会删除以前输入的所有文本。

“这不是一个bug,这是一个功能!”:)这不是一个很好的功能。这是一个安全的文本字段,所以这可能是问题所在。有什么办法解决这个问题吗?如果我没有做出辞职并成为第一响应者的决定,在iOS8中,键盘不会改变,所以必须在那里。我完全理解你,我们在通过编程从不安全模式切换到安全模式时遇到了同样的问题。正如我在谷歌上搜索的那样,没有“干净”的解决方案,但你总是可以在辞职前记住文本,然后再分配。