iOS8自定义键盘可以知道它正在写入的应用程序吗?我希望我的自定义键盘在Safari中的行为与邮件,照片,联系人等不同。我试过了
NSString *appName = [NSString stringWithString:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]];
和
NSString *home_folder = NSHomeDirectory() ;
但是那些只是指向封闭的应用程序,当然永远不会改变。
答案 0 :(得分:0)
不,没有办法检查键盘输入文字的应用程序。 UIInputViewController的文档中没有提及它,也没有Keyboard Extensions的更一般文档。
此外,这对用户来说会非常混乱。作为用户自己,我依赖于每个应用程序中的键盘相同。否则,我很难学会毫不费力地打字。
答案 1 :(得分:0)
Apple的默认键盘外观与其运行的应用程序独立。键盘的外观由键盘当前响应的对象控制。这意味着您无法强制键盘进入特定状态(只有UITextfield
/ UITextView
可以)。
但是,您可以通过使用UIReturnKeyType
等各种特征来做出相应的回应。
您可以执行以下操作,根据返回键类型指定不同的键盘自定义(P.S。下面的示例假定您的返回键按钮被称为returnButton
):
if (UIReturnKeyType == UIReturnKeyDone) {
[returnButton setTitle:@"Done" forState:UIControlStateNormal];
[returnButton setTitle:@"Done" forState:UIControlStateHighlighted];
}
else if (UIReturnKeyType == UIReturnKeyGo) {
[returnButton setTitle:@"Go" forState:UIControlStateNormal];
[returnButton setTitle:@"Go" forState:UIControlStateHighlighted];
}
else if (UIReturnKeyType == UIReturnKeyJoin) {
[returnButton setTitle:@"Join" forState:UIControlStateNormal];
[returnButton setTitle:@"Join" forState:UIControlStateHighlighted];
}
else if (UIReturnKeyType == UIReturnKeyNext) {
[returnButton setTitle:@"Next" forState:UIControlStateNormal];
[returnButton setTitle:@"Next" forState:UIControlStateHighlighted];
}
else if (UIReturnKeyType == UIReturnKeySend) {
[returnButton setTitle:@"Send" forState:UIControlStateNormal];
[returnButton setTitle:@"Send" forState:UIControlStateHighlighted];
}
else if (UIReturnKeyType == UIReturnKeyYahoo) {
[returnButton setTitle:@"Yahoo!" forState:UIControlStateNormal];
[returnButton setTitle:@"Yahoo!" forState:UIControlStateHighlighted];
}
else if (UIReturnKeyType == UIReturnKeySearch) {
[returnButton setTitle:@"Search" forState:UIControlStateNormal];
[returnButton setTitle:@"Search" forState:UIControlStateHighlighted];
}
else if (UIReturnKeyType == UIReturnKeyEmergencyCall) {
[returnButton setTitle:@"Emergency" forState:UIControlStateNormal];
[returnButton setTitle:@"Emergency" forState:UIControlStateHighlighted];
}
else if (UIReturnKeyType == UIReturnKeyRoute) {
[returnButton setTitle:@"Route" forState:UIControlStateNormal];
[returnButton setTitle:@"Route" forState:UIControlStateHighlighted];
}
else if (UIReturnKeyType == UIReturnKeyGoogle) {
[returnButton setTitle:@"Google" forState:UIControlStateNormal];
[returnButton setTitle:@"Google" forState:UIControlStateHighlighted];
}
else {
[returnButton setTitle:@"Return" forState:UIControlStateNormal];
[returnButton setTitle:@"Return" forState:UIControlStateHighlighted];
}
请记住,您还可以回复其他事项,例如UITextField / UITextView是否喜欢浅色或深色键盘。
if (UIKeyboardAppearance == UIKeyboardAppearanceDark) {
//Customize your keyboard's dark mode
} else {
//Customize your keyboard's light mode
}
有关详细信息,建议您阅读UITextInputTraits。我很高兴你真的考虑处理这一切!大多数第三方键盘缺少一些最基本的功能,这是不幸的。