如果在我的应用中选择了任何文本输入字段,我需要显示系统键盘。我似乎找不到任何关于如何做到这一点的资源。有什么提示吗?
编辑:我问这个问题,因为我正在制作一个全屏应用程序,需要根据用户选择显示/隐藏。
谢谢,
Teja公司
答案 0 :(得分:2)
你无法找到信息的原因是它是一个C API而且它不在Cocoa中。您需要使用的API是Text Input Sources Services。试试这个样本:
#import <Foundation/Foundation.h>
#import <Carbon/Carbon.h>
int main(){
NSAutoreleasePool*pool=[[NSAutoreleasePool alloc] init];
NSDictionary*property=[NSDictionary dictionaryWithObject:(NSString*)kTISTypeKeyboardViewer
forKey:(NSString*)kTISPropertyInputSourceType];
NSArray*tisArray=(NSArray*)TISCreateInputSourceList((CFDictionaryRef)property,NO);
// tisArray usually only contains just one keyboard viewer
// in a rare case the user might have another viewer installed, beware
TISInputSourceRef keyboardViewer=(TISInputSourceRef)[tisArray objectAtIndex:0];
TISSelectInputSource(keyboardViewer);
CFRelease((CFTypeRef)tisArray);
[pool drain];
return 0;
}
这是一个Core Foundation类型的API,所以如果你知道Cocoa的用法是相似的; Core Foundation基本上是NSObject
的C API。大多数情况下,您可以使用免费桥接,请参阅this SO question。在垃圾收集环境中保留/释放它们时需要小心。 TIS在10.5中引入;我不知道为什么Apple当时没有将它作为Cocoa API引入。
显然他们还没有下定决心处理64位碳。