UIKeyboard开启大写锁定
问题描述:
我需要用户输入像DF-DJSL一些数据,所以我把这个代码:UIKeyboard开启大写锁定
theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
但不幸的是发生的事情是第一个字母型CAPS但随后的信紧接在输入连字符后将是小写,然后其余的将返回到CAPS,因此产生这样的输出(除非用户在输入连字符后手动点击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;
}
}