我创建了一个可视化应用程序,该应用程序具有带文本字段的窗口以获取用户输入,这是一个小键盘图标按钮,用于显示键盘查看器。当用户点击确定或取消按钮完成时,我想隐藏键盘查看器。我所做的就是如下:编程地在Mac OS X上切换键盘查看器
//action for keyboard-icon button
-(IBAction)input:(id)sender
{
[self toggleKeyboard:YES];
}
//action for Cancel button
-(IBAction)cancel:(id)sender
{
[self toggleKeyboard:NO];
[NSApp abortModal];
[[self window] orderOut: self];
}
//action for OK button
-(IBAction)ok:(id)sender
{
[self toggleKeyboard:NO];
[NSApp stopModal];
[[self window] orderOut: self];
}
-(void)toggleKeyboard:(BOOL)show
{
NSDictionary *property = [NSDictionary dictionaryWithObject:(NSString*)kTISTypeKeyboardViewer
forKey:(NSString*)kTISPropertyInputSourceType];
NSArray *sources = (NSArray*)TISCreateInputSourceList((CFDictionaryRef)property, false);
TISInputSourceRef keyboardViewer = (TISInputSourceRef)[sources objectAtIndex:0];
if (show == YES)
{
TISSelectInputSource(keyboardViewer);
}
else
{
TISDeselectInputSource(keyboardViewer);
}
CFRelease((CFTypeRef)sources);
}
我可以成功启动键盘浏览器,但它不能被TISDeselectInputSource在任何时候都被隐藏。请帮忙!!!
您在MacOS中显示的“键盘查看器”并不意味着与iOS中的弹出式键盘使用相同的方式,而且我非常确定它无法通过编程方式轻松解决。如果没有其他人提出更好的解决方案,我可能会研究一下如何通过Apple Events或Apple Script解雇它。 – 2012-04-19 09:09:12
嗨迈克尔,我只是无法找到Mac OS上的开源虚拟键盘或任何关于如何实现它的文档。我尝试过使用NSAppleScript类的applescript方法(参考[this](http://patjack.co.uk/toggle-keyboard-viewer-in-snow-leopard-10-6/)),但它不起作用。你可以在这里发表一个真正有用的applescript吗?或者关于如何在可可中实现虚拟键盘的一些建议?提前感谢! – leochou0729 2012-04-19 09:58:17
@ leochou0729:你是否有特别的理由想要展示虚拟键盘? – 2012-04-20 20:34:19