给我一个关于UIReturnKey颜色/禁用属性的建议

时间:2011-08-30 09:40:57

标签: iphone uikeyboard

在某些情况下,我的应用程序看起来像下面的快照。

enter image description here

有一个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中提取当前字符串(包括最后一个字母)

因此,当在文本字段中按下一个字母时,应用程序将是这样的......

enter image description here

我的问题来了..

UIKeyboard中的“完成”按钮始终突出显示。因此,这违反了导航栏中“完成”按钮的行为。我想以与导航栏的完成按钮相同的方式禁用/启用UIKeyboard的完成按钮。有可能吗?

我脑海中的一些问题是......

我可以禁用UIKeyboard的“完成”按钮吗?

我可以改变背景颜色吗? UIKeyboard中Done按钮的选择颜色? (这样用户可能会觉得无法按下按钮)

我可以在UIKeyboard中隐藏完成按钮吗?

请建议哪一个是解决问题的好方法......

先谢谢

1 个答案:

答案 0 :(得分:2)

“界面”构建器属性的文本特征部分中有自动启用返回键设置。它完全符合您的需求,只需确保检查它。

如果您需要对代码进行更改,请使用UITextField的enablesReturnKeyAutomatically属性(这实际上是在类实现的UITextInputTraits协议中定义的)