我有一个输入字段,用户需要填写字母数字代码。用户键入代码的键盘有一个动态返回按钮,当他在字段上写入一些文本时,它会变为“发送”。当该字段为空时,返回按钮具有默认值。
要动态更改返回按钮类型,请使用以下代码:
if([textField.text isEqualToString:@""])
{
textField.returnKeyType = UIReturnKeyDefault;
}
else
{
textField.returnKeyType = UIReturnKeySend;
}
[textField reloadInputViews];
然而,这有以下缺点:由于代码是字母数字,用户可能正在键入数字,但键盘将始终切换回字母键盘,因此要连续输入多个数字,他需要不断切换到数字键盘。
有没有办法在用户键入时动态更改键盘的返回键,但是将键盘状态保存为字母或数字键盘?
答案 0 :(得分:1)
我认为这不是Apple的错误,更多的是缺少键盘API的实现。使用新的iOS8 API,您可能需要创建自己的键盘,返回UIKeyboardType
。
对于iOS7,我通过检查键盘的视图来解决问题。使用US2KeyboardType
CocoaPod或来源:
https://github.com/ustwo/US2KeyboardType
答案 1 :(得分:1)
正如马丁上面提到的那样,这不是苹果方面的错误,而是在我身边。但是我会发布我找到的解决方案,因为它解决了这个问题:
当文本字段中有文本时,Apple不会手动更改返回键类型,而是向我们提供名为enablesReturnKeyAutomatically
的属性,当设置为YES
时,它会自动管理问题,启用和禁用返回键取决于文本字段中是否有文本。
因此,您不需要修改returnKeyType
属性,因此不需要调用reloadInputViews
,因此键盘不会更改回其原始状态。