Iphone 为UIReturnKey颜色/禁用属性提供建议

Iphone 为UIReturnKey颜色/禁用属性提供建议,iphone,uikeyboard,Iphone,Uikeyboard,在某些场景中,我的应用程序看起来像下面的快照 有一个UITextField可从用户处获取部门名称。最初,导航栏中的“完成”按钮设置为禁用。也就是说,将右栏按钮的启用属性设置为否 文本字段的UI键盘由以下代码组成 fieldForDepartment.keyboardAppearance = UIKeyboardAppearanceAlert; //This provides the black appearance to the keyboard fieldForDepartment.retu

在某些场景中,我的应用程序看起来像下面的快照

有一个UITextField可从用户处获取部门名称。最初,导航栏中的“完成”按钮设置为禁用。也就是说,将右栏按钮的
启用
属性设置为

文本字段的UI键盘由以下代码组成

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 with string:string]
将从UITextField中取出当前字符串(包括最后按下的字母)

因此,当在文本字段中按字母时,应用程序将如下所示

我的问题来了

UI键盘中的“完成”按钮始终高亮显示。因此,这违反了导航栏中“完成”按钮的行为。我想禁用/启用UIKeyboard的“完成”按钮,方法与导航栏的“完成”按钮相同。可能吗

我脑海中的一些问题是

我可以禁用键盘上的“完成”按钮吗

我可以只更改UI键盘中“完成”按钮的背景色和选择色吗?(这样用户可能会觉得按钮无法按下)

我可以在键盘上隐藏“完成”按钮吗

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


提前感谢

在Interface builder属性的文本特征的部分中有一个自动启用返回键设置。它正是你所需要的,只是要确保检查它


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

感谢您的信息。。但是我在我的应用程序中没有使用IB。我正在做所有的代码。您是指“.userInteractionEnabled”吗?这不起作用:(感谢您的回复。我在.h文件中添加了协议
uiteReturnKeyits
,然后添加了.enablesReturnKeyAutomatically=YES;(隐藏返回密钥)和.enablesReturnKeyAutomatically=NO;(显示返回密钥)在
textField:shouldChangeCharactersRange:
方法中。但它仍然不起作用。您不想在该方法中设置它,而是在viewDidLoad中的某个位置将其设置为“是”。如果设置为“是”,它将自动注意,并在必要时启用/禁用返回键。