2013-03-11 4 views
3

Я хотел бы повернуть клавиатуру своего пользователя от верхнего регистра до нижнего регистра, чтобы заставить печатать в нижнем регистре. Как я могу это сделать?Программно переключайте клавиатуру от верхнего регистра до нижнего регистра

+2

Вы можете получить UIWindow, содержащий клавиатуру и использовать несколько очень очень противозаконные API, кварцевые, чтобы имитировать прикосновение вниз в общей близости ключа капс. Или просто позвольте текстовым средствам управления iOS обрабатывать его, установив его как «capitalizationType». Возьмите свой выбор. – CodaFi

+0

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

+0

@CodaFi проблема в том, что когда я вызываю 'textView shouldChangeTextInRange' и использую свои собственные методы для обновления textView, а затем' return NO; 'код никогда не вызывается, чтобы отключить ключ caps после нажатия первого ключа (например, заглавной буквы первой буквы предложения). Поэтому мне нужно сделать свой собственный метод, перейдя в iOS, добавив текст, который пользователь набрал, а затем все остальные возвратит все другие методы. –

ответ

1

Что вы можете сделать, это сделать строку текстового поля в нижнем регистре после закрытия клавиатуры. Например,

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

Это делает текст строчным, когда они закрывают клавиатуру, которая делает то, что вы хотите.

+0

Это будет хорошо, за исключением того, что я меняю свой текст прямо сейчас, заставляя замок блокировки включаться после каждой клавиши, нажимающей ... однако пользователь может захотеть, чтобы буква была заглавной, но на данный момент она или нет. вкл. или выкл., он будет принудительно включен после нажатия каждой клавиши. –

4

Вместо того чтобы пытаться заставить клавиатуру в нижнем регистре, просто введите символы в нижний регистр после того, как пользователь наберет их.

Вы не сказали, используете ли вы UITextField или UITextView. Предположим, вы используете 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:.

0

textField.autocapitalizationType = .none

для быстрой