如何检测用户何时更换键盘?

有什么方法来检测用户何时更改键盘types,特别是在这种情况下的表情符号键盘?

您可以使用UITextInputMode来检测currentInputMode的当前语言 – 表情符号被视为一种语言。 从文档 :

UITextInputMode类的一个实例表示当前的文本input模式。 您可以使用此对象来确定当前正在用于文本input的主要语​​言。

你可以像这样testing表情符号键盘:

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

您可以通过UITextInputCurrentInputModeDidChangeNotification通知input模式更改。 这将在当前input模式改变时发布。

下面是一个简单的应用程序,只要模式改变就打印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)") } }