有没有办法检测用户何时更改键盘类型,特别是在这种情况下更改为表情符号键盘?
答案 0 :(得分:19)
您可以使用UITextInputMode
来检测currentInputMode
的当前语言 - 表情符号被视为一种语言。来自docs:
UITextInputMode
类的实例代表当前 文字输入模式。您可以使用此对象来确定主要对象 目前用于文本输入的语言。
您可以像这样测试表情符号键盘:
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)")
}
}
答案 1 :(得分:0)
迅速4:
NotificationCenter.default.addObserver(self,
selector: #selector(FirstViewController.changeInputMode(_:)),
name: NSNotification.Name.UITextInputCurrentInputModeDidChange, object: nil)
func changeInputMode(_ notification: Notification)
{
let inputMethod = UITextInputMode.activeInputModes.description
print("keyboard changed to \(inputMethod.description)")
}