2012-01-15 20 views
20

Abre la aplicación Calendario de Apple. Cuando nombra una nueva cita, automáticamente escribe en mayúscula la primera letra. No utiliza el cambio de estilo de 'corrección' para hacer esto.Capitalización de UITextField

Por mi vida no puedo reproducir este comportamiento. En IB, he establecido la Capitalización de UITextField en Word, pero parece no tener ningún efecto. Si activo la corrección, se intercambiará la palabra con una versión en mayúscula, pero esto no es del todo correcto.

¿Necesito manejar esto en el código, al marcar cada tecla presionar? Esto es probablemente trivial, excepto que estoy preocupado por todos los casos de esquina que extrañaré, como cuando el usuario usa manualmente 'shift' para negar el uso de mayúsculas, o elimina y vuelve a escribir claves, en cuyo caso no debe capitalizar .

¿O tal vez hay una forma de simplemente cargar el campo de texto con shift presionado? ¿Es esta la forma común de implementarlo?

Respuesta

22

¿Está utilizando el simulador o un dispositivo real? Si está utilizando el simulador, la carcasa respetará el estado de cambio y de bloqueo de mayúsculas del teclado físico en su computadora.

+0

No he olvidado esta idea, solo espero hasta que tenga la oportunidad de delegar en mi teléfono –

+0

Gracias - confirmado. –

61

Configurar las mayúsculas a Word debería hacer esto, entonces algo más está yendo mal. ¿Estás seguro de que está activado en el UITextField real que estás probando? ¿Estás seguro de que quizás no lo anules en el código de alguna manera? Se puede establecer mediante programación con:

[myTextField setAutocapitalizationType:UITextAutocapitalizationTypeWords]; 

También hay una excepción (por the docs) donde esto se tendrá en cuenta:

Algunos tipos de teclado no soportan auto-capitalización. Específicamente, esta opción se ignora si el valor en la propiedad keyboardType es establecido en UIKeyboardTypeNumberPad, UIKeyboardTypePhonePad o UIKeyboardTypeNamePhonePad.

¿Esto se aplica a usted?

+16

UIKeyboardTypeNamePhonePad si ... pero la mayoría de los nombres no están en mayúsculas? ¿Por qué esta excepción? –

+2

Ese también fue mi problema, ¿por qué no habilité las mayúsculas en NamePhonePad? –

+0

Gracias, sí, ese fue el problema. Mal en apple tener esto. – nithinreddy

14

Acabo de comprobar esto en mi aplicación y ya lo hizo Capitalización por defecto. el comportamiento no está determinado por el código de su aplicación, sino por la configuración global del iPhone.

iniciar configuración de iOS. Vaya a General, luego Teclado, allí el usuario tiene la opción de "Auto-Capitalización". ¿está apagado?

en mi caso estaba encendido, por lo que mi aplicación y el calendario tenían esta característica, cuando la apago, ambas aplicaciones carecen de esta característica, porque el usuario decidió que no desea esta característica.

+0

para iOS 7 Esta es la mejor respuesta +1 –

4

Capitalización desactivar

textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 

Para capitalizar todos los caracteres

textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters; 

Para capitalizar primer carácter de la pena

textField.autocapitalizationType = UITextAutocapitalizationTypeSentences; 

Para capitalización del primer carácter de todas las palabras en sentense

textField.autocapitalizationType = UITextAutocapitalizationTypeWords; 
3

Ciertos teclados ignoran el tipo de capitalización

Algunos tipos de teclado no soportan auto-capitalización. Específicamente, esta opción se ignora si el valor en la propiedad keyboardType se establece en UIKeyboardTypeNumberPad, UIKeyboardTypePhonePad o UIKeyboardTypeNamePhonePad.

More details on the developer reference

2

Aquí es una actualización de Swift 2.0 para todos los caracteres:

SomeTextField.autocapitalizationType = UITextAutocapitalizationType.AllCharacters 
0

que tenía el mismo problema con la propiedad de capitalización, acabo de cambiar el tipo de teclado predeterminados y todo empezar a trabajar como se esperaba . En mi caso, había configurado keyboardType en NamePhonePad que no admite el uso de mayúsculas automático.