2014-06-11 2 views

답변

19

UITextInputMode을 사용하면 currentInputMode의 현재 언어를 감지 할 수 있습니다. 이모티콘은 언어로 간주됩니다. docs에서 :

UITextInputMode 클래스의 인스턴스는 현재 텍스트 입력 모드를 나타냅니다. 이 개체를 사용하여 현재 텍스트 입력에 사용중인 기본 언어 을 확인할 수 있습니다.

이 같은 이모티콘 키보드를 테스트 할 수 있습니다 : 당신은 UITextInputCurrentInputModeDidChangeNotification를 통해 변화하는 입력 모드 통보 할 수

NSString *language = [[UITextInputMode currentInputMode] primaryLanguage]; 
BOOL isEmoji = [language isEqualToString:@"emoji"]; 
if (isEmoji) 
{ 
    // do something 
} 

. 현재 입력 모드가 변경되면 게시됩니다.

여기 NSLog을 출력하는 간단한 응용 프로그램입니다 때마다 모드가 변경 :

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 
     selector:@selector(changeInputMode:) 
      name:UITextInputCurrentInputModeDidChangeNotification object:nil];} 
} 

-(void)changeInputMode:(NSNotification *)notification 
{ 
    NSString *inputMethod = [[UITextInputMode currentInputMode] primaryLanguage]; 
    NSLog(@"inputMethod=%@",inputMethod); 
} 

또는 당신이 선호하는 경우 Swift :

import UIKit 

class ViewController: UIViewController 
{ 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     NSNotificationCenter.defaultCenter().addObserver(self, 
     selector: "changeInputMode:", 
      name: UITextInputCurrentInputModeDidChangeNotification, object: nil) 
    } 

    func changeInputMode(notification : NSNotification) 
    { 
     let inputMethod = UITextInputMode.currentInputMode().primaryLanguage 
     println("inputMethod: \(inputMethod)") 
    } 


} 
+0

@MichaelGEmmons currentInputMode는 iOS7에서 사용되지 않습니다. 대안이 있습니까? – Apollo

+0

@Apollo 그래. 새로운 메소드는 UITextInputMode 객체의 배열을 반환하는'activeInputModes'입니다. inputMode에 대해'primaryLanguage'가 _emoji_ 인 배열을 확인하면 같은 결과를 얻습니다. – memmons

+0

@MichaelGEmmons 배열은 가능한 모든 사용자 키보드를 일정한 순서로 반환합니다. 우리가 어떤 키보드를 사용하는지 어떻게 알 수 있습니까? – Apollo

관련 문제