iOS8自定义键盘可以知道它是什么应用程序吗?

时间:2014-10-03 22:20:10

标签: ios keyboard ios8

iOS8自定义键盘可以知道它正在写入的应用程序吗?我希望我的自定义键盘在Safari中的行为与邮件,照片,联系人等不同。我试过了

NSString *appName = [NSString stringWithString:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]];

NSString *home_folder = NSHomeDirectory() ;

但是那些只是指向封闭的应用程序,当然永远不会改变。

2 个答案:

答案 0 :(得分:0)

不,没有办法检查键盘输入文字的应用程序。 UIInputViewController的文档中没有提及它,也没有Keyboard Extensions的更一般文档。

此外,这对用户来说会非常混乱。作为用户自己,我依赖于每个应用程序中的键盘相同。否则,我很难学会毫不费力地打字。

答案 1 :(得分:0)

Apple的默认键盘外观与其运行的应用程序独立。键盘的外观由键盘当前响应的对象控制。这意味着您无法强制键盘进入特定状态(只有UITextfield / UITextView可以)。

但是,您可以通过使用UIReturnKeyType等各种特征来做出相应的回应。

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];
}  

UIKeyboardAppearance

请记住,您还可以回复其他事项,例如UITextField / UITextView是否喜欢浅色或深色键盘。

if (UIKeyboardAppearance == UIKeyboardAppearanceDark) {
    //Customize your keyboard's dark mode
} else {
    //Customize your keyboard's light mode
}

有关详细信息,建议您阅读UITextInputTraits。我很高兴你真的考虑处理这一切!大多数第三方键盘缺少一些最基本的功能,这是不幸的。