我需要我的用户输入一些数据,比如DF-DJSL,所以我把它放在代码中:
theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
但遗憾的是,CAPS中首先输入字母类型,但输入连字符后立即输入字母将为小写,然后其余返回CAPS因此产生这样的输出(除非用户手动点击移位按钮后输入连字符):DF-dJSL
我该如何解决这个问题?
非常感谢
答案 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;
}
}