2008-12-01 16 views

Respuesta

7

Esta es una configuración definida por el usuario y desafortunadamente no puede ser molestada por el programador.

0

No estoy seguro de por qué quieres hacer esto - No hablo ruso, y estaría un poco alarmado si de repente apareciera un teclado ruso.

El usuario puede elegir el idioma que desea en la aplicación de configuración de iPhone. Eso luego determina qué teclado aparece cuando tocan un campo de texto.

+5

No te alarmes si era ruso . – Nestor

+0

Responda la pregunta o simplemente agregue un comentario a la pregunta –

0

Quiero hacer esto porque estoy escribiendo una aplicación de aprendizaje de idiomas.

Lo que hace que la configuración actual de la selección del teclado en el iPhone sea aún peor (al menos para mí) es que no recuerda el teclado para cada aplicación. De modo que si lo cambia para una aplicación, seguirá siendo el mismo teclado para la siguiente aplicación que abra.

0

No sé sobre iPhone 3.0 SDK, pero a partir de 2.x, no puede controlar esto. Lo que puedes hacer, sin embargo, es hacer un teclado personalizado. Es mucho más trabajo, pero podrías rehacer los diseños para cada idioma.

0

Respondiendo a la pregunta sobre el teclado inglés - Apple diseñó para eso - puede usar el teclado ASCII - que puede elegir con: UIKeyboardTypeASCIICapable.

2

No hay problema en 3.1+. Configuré esto para 3.0:

self.searchBar.keyboardType = UIKeyboardTypeURL; 

y aparece el botón de cambio de idioma.

1

No puede configurar el teclado para su juego de caracteres deseado, pero lo mejor es evitar que el usuario ingrese caracteres de cualquier otro juego de caracteres. El delegado de abajo hace esto y también activa el vibrador del iPhone cuando se ingresan caracteres incorrectos, lo que funciona bien para alertar rápidamente al usuario de que tiene el teclado equivocado seleccionado. Esto es para Corea, pero puede modificar fácilmente para otros idiomas (ver comentarios):

Archivo de cabecera:

#import <Foundation/Foundation.h> 
#import <AudioToolbox/AudioToolbox.h> 

@interface KoreanOnlyInput : NSObject <UITextFieldDelegate> 
{ 
    NSMutableCharacterSet* koreanUnicode; 
} 

@end 

archivo .m:

#import "KoreanOnlyInput.h" 

@implementation KoreanOnlyInput 

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     // From http://www.unicodemap.org/ : 
     // 0x1100 - 0x11FF : Hangul Jamo (256) 
     // 0x3130 - 0x318F : Hangul Compatibility Jamo (96) 
     // 0xAC00 - 0xD7A3 : Hangul Syllables (11172) 

     koreanUnicode = [[NSMutableCharacterSet alloc] init]; 
     NSRange range; 

     range.location = 0x1100; 
     range.length = 1 + 0x11FF - range.location; 
     [koreanUnicode addCharactersInRange:range]; 

     range.location = 0x3130; 
     range.length = 1 + 0x318F - range.location; 
     [koreanUnicode addCharactersInRange:range]; 

     range.location = 0xAC00; 
     range.length = 1 + 0xD7A3 - range.location; 
     [koreanUnicode addCharactersInRange:range]; 
    } 
    return self; 
} 

- (void)dealloc 
{ 
    [koreanUnicode release]; 
    [super dealloc]; 
} 

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string 
{ 
    if ([string isEqualToString:@"\n"]) 
     return YES; 

    BOOL shouldChange = YES;  
    for (int i=0; i<[string length]; i++) 
    { 
     if (![koreanUnicode characterIsMember:[string characterAtIndex:i]]) 
      shouldChange = NO; 
    } 

    if (!shouldChange) 
    { 
     AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 
    } 

    return shouldChange; 
} 

@end 
Cuestiones relacionadas