2014-06-11 24 views
11

Kullanıcının klavye türlerini, özellikle de bu durumda Emoji klavyesini ne zaman değiştirdiğini algılamanın bir yolu var mı?Kullanıcı klavyeleri ne zaman değiştirir?

+0

çözmeye gerek sorunun ne? – zaph

+0

@Zaph Emoji klavyesi gösterildiğinde ekranda yeni bir UIView sunmaya çalışıyorum. – Apollo

cevap

19

currentInputMode'un geçerli dilini algılamak için UITextInputMode'u kullanabilirsiniz. Emoji bir dil olarak değerlendirilir. docs Gönderen:

UITextInputMode sınıfının bir örneği şimdiki metin giriş modunu temsil eder. Metin girişi için şu anda kullanılan birincil dilini belirlemek için bu nesneyi kullanabilirsiniz.

Böyle emojisi klavye için test edebilirsiniz: Sen UITextInputCurrentInputModeDidChangeNotification yoluyla değişen giriş modu haberdar edilebilir

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

. Mevcut giriş modu değiştiğinde bu yayınlanır.

İşte bir NSLog yazdırır basit bir uygulama var her mod değişiklikleri:

- (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); 
} 

Ya da isterseniz 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'de kullanımdan kaldırılmıştır. Alternatif var mı? – Apollo

+0

@Apollo Yep. Yeni yöntem, bir dizi UITextInputMode nesnesi döndüren 'activeInputModes''dir. _emoji_ "primaryLanguage" ile bir inputMode için diziyi kontrol edin ve aynı sonuçları elde edersiniz. – memmons

+0

@MichaelGEmmons Bu dizi, tüm kullanıcılara mümkün olan klavyeleri sabit sırada döndürür. Hangi klavye üzerinde olduğumuzu nasıl bilebilirim? – Apollo

İlgili konular