UIKeyboard打开大写锁定

时间:2010-04-25 15:40:53

标签: iphone uikeyboard

我需要我的用户输入一些数据,比如DF-DJSL,所以我把它放在代码中:

theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;

但遗憾的是,CAPS中首先输入字母类型,但输入连字符后立即输入字母将为小写,然后其余返回CAPS因此产生这样的输出(除非用户手动点击移位按钮后输入连字符):DF-dJSL

我该如何解决这个问题?

非常感谢

1 个答案:

答案 0 :(得分:6)

您没有提到您正在使用的SDK,但是针对3.0及更高版本,我看到了您想要的行为。

也就是说,当他们使用委托中的 textFieldDidEndEditing 方法完成编辑时,您总是可以将文本更改为大写:

- (void)textFieldDidEndEditing:(UITextField *)textField {
    NSString *textToUpper = [textField.text uppercaseString];   
    [theTextField setText:textToUpper];
}

或者,通过在文本字段更改时设置通知,您可以在输入时更改文本:

// setup the UITextField
{
    theTextField.delegate = self;
    theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
    [theTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
}

您必须这样做,因为与 UISearchBar 不同, UITextField 不会实现 textDidChange 。也许是这样的事情?

- (void)textFieldDidChange:(UITextField *)textField {
    NSRange range = [textField.text rangeOfString : @"-"];
    if (range.location != NSNotFound) {
        theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
    }
}