Есть ли способ обнаружить, когда пользователь изменяет типы клавиатуры, в частности, на клавиатуру Emoji в этом случае?
Как определить, когда пользователь меняет клавиатуру?
Ответ 1
Вы можете использовать UITextInputMode
для определения текущего языка currentInputMode
- emoji считается языком. Из docs:
Экземпляр класса
UITextInputMode
представляет текущий режим ввода текста. Вы можете использовать этот объект для определения основного язык, используемый в настоящее время для ввода текста.
Вы можете проверить клавиатуру emoji следующим образом:
NSString *language = [[UITextInputMode currentInputMode] primaryLanguage];
BOOL isEmoji = [language isEqualToString:@"emoji"];
if (isEmoji)
{
// do something
}
Вы можете получать уведомления об изменении режима ввода с помощью UITextInputCurrentInputModeDidChangeNotification
. Это будет отображаться при изменении текущего режима ввода.
Здесь простое приложение, которое печатает 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)")
}
}