我需要我的用户输入一些数据,比如 DF-DJSL,所以我把它放在代码中:
theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
但不幸的是,发生的情况是第一个输入大写字母,然后在输入连字符后立即输入小写字母,然后其余的返回大写字母,因此产生这样的输出(除非用户在输入连字符后手动点击 shift 按钮): DF-dJSL
我怎样才能解决这个问题?
非常感谢
我需要我的用户输入一些数据,比如 DF-DJSL,所以我把它放在代码中:
theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
但不幸的是,发生的情况是第一个输入大写字母,然后在输入连字符后立即输入小写字母,然后其余的返回大写字母,因此产生这样的输出(除非用户在输入连字符后手动点击 shift 按钮): DF-dJSL
我怎样才能解决这个问题?
非常感谢
您没有提及您正在使用哪个 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;
}
}