动态更改键盘返回按钮但保留类型

时间:2014-02-27 11:29:01

标签: ios

我有一个输入字段,用户需要填写字母数字代码。用户键入代码的键盘有一个动态返回按钮,当他在字段上写入一些文本时,它会变为“发送”。当该字段为空时,返回按钮具有默认值。

要动态更改返回按钮类型,请使用以下代码:

if([textField.text isEqualToString:@""])
{
    textField.returnKeyType = UIReturnKeyDefault;
}
else
{
    textField.returnKeyType = UIReturnKeySend;
}
[textField reloadInputViews];

然而,这有以下缺点:由于代码是字母数字,用户可能正在键入数字,但键盘将始终切换回字母键盘,因此要连续输入多个数字,他需要不断切换到数字键盘。

有没有办法在用户键入时动态更改键盘的返回键,但是将键盘状态保存为字母或数字键盘?

2 个答案:

答案 0 :(得分:1)

我认为这不是Apple的错误,更多的是缺少键盘API的实现。使用新的iOS8 API,您可能需要创建自己的键盘,返回UIKeyboardType

对于iOS7,我通过检查键盘的视图来解决问题。使用US2KeyboardType CocoaPod或来源: https://github.com/ustwo/US2KeyboardType

答案 1 :(得分:1)

正如马丁上面提到的那样,这不是苹果方面的错误,而是在我身边。但是我会发布我找到的解决方案,因为它解决了这个问题:

当文本字段中有文本时,Apple不会手动更改返回键类型,而是向我们提供名为enablesReturnKeyAutomatically的属性,当设置为YES时,它会自动管理问题,启用和禁用返回键取决于文本字段中是否有文本。

因此,您不需要修改returnKeyType属性,因此不需要调用reloadInputViews,因此键盘不会更改回其原始状态。