在某些情况下,我的应用程序看起来像下面的快照。
有一个UITextField可以从用户那里获取部门名称。最初,导航栏中的“完成”按钮设置为禁用。也就是说,将右侧栏按钮的enabled
属性设置为NO
文本字段的UIKeyBoard由以下代码
制作fieldForDepartment.keyboardAppearance = UIKeyboardAppearanceAlert; //This provides the black appearance to the keyboard
fieldForDepartment.returnKeyType = UIReturnKeyDone; //This set the return key type as Done
fieldForDepartment.clearButtonMode = UITextFieldViewModeWhileEditing; //This is used because i want a small cross button in the right end of my text field to clear the text field value
(此处fieldForDepartment
是UITextField实例的名称)
我想启用导航栏中的“完成”按钮,如果&只有在文本字段中应至少有一个字母(甚至可能是空格)。如果我的文本字段中没有字母,则应该禁用“完成”按钮。
为此,我实现了这段代码......
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([[fieldForDepartment.text stringByReplacingCharactersInRange:range withString:string] isEqual:@""] || [fieldForDepartment.text stringByReplacingCharactersInRange:range withString:string] == nil) {
rightBarButton.enabled = NO;
}
else {
rightBarButton.enabled = YES;
}
return YES;
}
为键盘中的每个字母按下调用此方法textField: shouldChangeCharactersInRange:
。
[fieldForDepartment.text stringByReplacingCharactersInRange:range withString:string]
将从UITextField中提取当前字符串(包括最后一个字母)
因此,当在文本字段中按下一个字母时,应用程序将是这样的......
我的问题来了..
UIKeyboard中的“完成”按钮始终突出显示。因此,这违反了导航栏中“完成”按钮的行为。我想以与导航栏的完成按钮相同的方式禁用/启用UIKeyboard的完成按钮。有可能吗?
我脑海中的一些问题是......
我可以禁用UIKeyboard的“完成”按钮吗?
或
我可以改变背景颜色吗? UIKeyboard中Done按钮的选择颜色? (这样用户可能会觉得无法按下按钮)
或
我可以在UIKeyboard中隐藏完成按钮吗?
请建议哪一个是解决问题的好方法......
先谢谢
答案 0 :(得分:2)
“界面”构建器属性的文本特征部分中有自动启用返回键设置。它完全符合您的需求,只需确保检查它。
如果您需要对代码进行更改,请使用UITextField的enablesReturnKeyAutomatically
属性(这实际上是在类实现的UITextInputTraits
协议中定义的)