2013-03-11 78 views
3

我想將用戶的鍵盤從大寫變成小寫,強制鍵入小寫。我怎樣才能做到這一點?以編程方式將鍵盤從大寫切換爲小寫

+2

你可以得到包含鍵盤的UIWindow並使用幾個非常非常非法石英API來在帽關鍵的一般附近向下模擬觸摸。或者,讓iOS的文本控件通過適當地設置它的'capitalizationType'來處理它。帶你去挑。 – CodaFi 2013-03-11 22:16:08

+0

@CodaFi:D:D:D – 2013-03-11 22:32:41

+0

@CodaFi問題是,當我調用'textView shouldChangeTextInRange'並使用我的自定義方法更新textView,然後'返回NO;'代碼永遠不會被調用來關閉大寫鍵在按下第一個鍵之後(如大寫一個句子的第一個字母)。所以我需要做我的自定義方法,從iOS添加用戶輸入的文本,然後返回所有其他方法。 – 2013-03-11 22:39:02

回答

1

你可以做的是在關閉鍵盤後使文本框的字符串小寫。例如,

[sender resignFirstResponder]; 
textField.text = textField.text.lowercaseString; 

這使得文本小寫,當他們關閉鍵盤,這是你想要的。

+0

這會很好,除了我現在改變他們的文本的方式強制大寫字母鎖在他們按下每個按鍵之後打開...但是用戶可能需要一些字母大寫,但是現在是否更大,打開或關閉後,每按下一個鍵後都會強制開啓。 – 2013-03-11 22:36:40

4

而不是試圖強制鍵盤變成小寫,只是在用戶輸入後強制字符變爲小寫。

你沒有說你是否使用UITextFieldUITextView。假設您使用的是UITextField

聲明您的視圖控制器採用UITextFieldDelegate協議,並將文本字段的委託設置爲視圖控制器。

在視圖控制器,實現此方法:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    string = [string lowercaseString]; 
    textField.text = [textField.text stringByReplacingCharactersInRange:range 
     withString:string]; 
    return NO; 
} 

如果使用一個UITextView,採用UITextViewDelegate協議和實現該方法textView:shouldChangeTextInRange:replacementText:

1

textField.autocapitalizationType = UITextAutocapitalizationTypeNone;

0

textField.autocapitalizationType = .none

爲迅速

相關問題