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]; 
} 

你必须这样做,因为这样一来,不像的UISearchBarUITextField不执行textDidChange。也许这样的事情?

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