2010-04-25 65 views
1

我需要用戶輸入像DF-DJSL一些數據,所以我把這個代碼:UIKeyboard開啓大寫鎖定

theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters; 

但不幸的是發生的事情是第一個字母型CAPS但隨後的信緊接在輸入連字符後將是小寫,然後其餘的將返回到CAPS,因此產生這樣的輸出(除非用戶在輸入連字符後手動點擊shift按鈕):DF-dJSL

我該如何解決這個問題?

非常感謝

回答

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

你必須這樣做,因爲這樣一來,不像的UISearchBarUITextField不執行textDidChange。也許這樣的事情?

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