2015-02-04 16 views
1

다국어 지원 iPhone 응용 프로그램을 만들고 싶습니다. 그에서 사용자가 응용 프로그램의 설정에서 언어 집합에서 선택한 언어로 값을 입력하고 싶습니다. 따라서 선택한 언어 키보드가 표시되어야합니다. 예를 들어iPhone 앱의 UITextField에서 사용자 입력 값을 입력 할 때 특정 언어 키보드를 표시하는 방법은 무엇입니까?

: 사용자가 내 응용 프로그램의 설정에서 프랑스어를 선택한 경우. 그런 다음 내 응용 프로그램의 모든 UITextField에서 사용자는 불어로 값을 입력 할 수 있어야합니다. 그래서 키보드가 열리면 기본 언어 키보드 대신 매번 표시되는 프랑스어 언어 키보드인지 확인해야합니다.

그래서 질문은 사용자가 응용 프로그램의 설정에서 선택한 언어에 따라의 UITextField에 탭 때마다 특정 언어 키보드를 표시 할 수있다? 그렇다면 어떻게됩니까?

답변

0

당신은 설정 또는 다음과 같이 코딩을 통해인지 변경 장치 언어없이이 작업을 수행 할 수 없습니다. // ex spanish language (es).

NSArray *langOrder = [NSArray arrayWithObjects:@"es", nil]; 
[[NSUserDefaults standardUserDefaults] setObject:langOrder forKey:@"AppleLanguages"]; 

이 바로 변경됩니다 언어 순서 ..

당신이 선택한 언어에 따라 키보드를 제어 할 수 없습니다. 사용자는 설정 응용 프로그램을 통해 사용할 키보드를 선택하고 키보드의 지구본 아이콘을 사용하여 키보드간에 토글 할 수 있습니다.

+0

용량은 그것을 위해 키보드 변경 너 dipen? – Jageen

+0

아니요 언어 순서 만 변경됩니다. –

+0

이 가능하다,이 링크 http://stackoverflow.com/questions/19497047/applelanguages-value-overrides-the-value-of-language-set-in-ios-settings-preferr – Jageen

0

나는 당신이 원하는 일에 대해 말을 단 하나의 단어가없는 사과 문서 Managing the keyboard를 던져 이동합니다. 라인 아래에서 발견
enter image description here
The input method and layout for the keyboard is determined by the user’s language preferences.

+0

내 질문이 던져 이동하십시오 UITextField를 두드리는 동안 예를 들어 프랑스 키보드 대신 기본 영어 키보드라고 직접 말하면서 코딩 할 수 있습니까? – darshit261991

0

당신은 UITextView

@implementation UITextView (Localization) 

- (UITextInputMode *) textInputMode { 
    for (UITextInputMode *inputMode in [UITextInputMode activeInputModes]) 
    { 
     if ([[self langFromLocale:[self localeKey]] isEqualToString:[self langFromLocale:inputMode.primaryLanguage]]) 
      return inputMode; 
    } 
    return [super textInputMode]; 
} 


- (NSString*) localeKey 
{ 
    NSArray* lang = [[NSUserDefaults standardUserDefaults]objectForKey:@"AppleLanguages"]; 
    NSString* currentLang = lang[0]; 
    return currentLang; 
} 

- (NSString *)langFromLocale:(NSString *)locale { 
    NSRange r = [locale rangeOfString:@"_"]; 
    if (r.length == 0) r.location = locale.length; 
    NSRange r2 = [locale rangeOfString:@"-"]; 
    if (r2.length == 0) r2.location = locale.length; 
    return [[locale substringToIndex:MIN(r.location, r2.location)] lowercaseString]; 
} 

에 대한 textInputMode를 오버라이드 (override) 할 필요가 그리고 당신은 지금 짱 입력하여 lang을 변경할 수 있습니다

[[NSUserDefaults standardUserDefaults] setObject:@[@"fr"] forKey:@"AppleLanguages"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 
+0

내 질문은, 그것은의 UITextField에 도청 동안 내가 직접 열기보다는 예를 들어 프랑스어 키보드 말할 영어 키보드를 기본적으로 할 수있는 코딩으로 가능하다? – darshit261991

+0

@ darshit261991 그 해결책을 찾았습니까? – slxl