Symbian S60 第 5 版上的虚拟键盘是如何(即使用哪个 API)打开的?该文档似乎缺少有关此的信息。
3 回答
你是对的,这显然应该是一个已发布的 API,它应该在文档中突出显示。没有这样的运气。
如果您使用的是平台原生控件之一,当用户访问文本编辑控件时,虚拟键盘将自动弹出。
如果您正在制作自定义控件,则需要通过添加您自己的虚拟键盘版本来处理它的选择:使用正确的按钮制作一个新的文本编辑、拥有窗口的虚拟键盘外观相似的自定义控件。在您的所有应用程序中重复使用它。有一天,诺基亚会意识到他们犯了一个明显的错误,并将 API 公开。
如果您使用直接屏幕访问,那么您不会完全期望看起来非常 s60 的虚拟键盘会突然弹出。再次,在屏幕上绘制一个漂亮的图像,让用户知道虚拟键在哪里并对指针事件做出反应。除非您在其中构建大量自定义(背景,按钮边缘......),否则这将不太可重用。
编辑:诺基亚可能依靠 Qt 来解决这个问题。我希望该控件成为当前 4.7 版 Qt 的一部分。
专注于自定义编码动态滚动区域内的 QLineEdit,我遇到了一个类似的问题(如何手动打开虚拟键盘)。然后,我发现它显然适用于 C7 Symbian^3 手机上的 Qt 4.6.3:
// lineEdit is an instance of QLineEdit
QApplication::postEvent(lineEdit, new QEvent(QEvent::RequestSoftwareInputPanel));
在此之前,我还必须将 QEvent::FocusIn 事件发布到同一个 lineedit,否则 QLineEdit 不会更新虚拟键盘的内容。
希望这会有所帮助。我失去了几个小时。
谢谢tihi,非常有用的提示!还有可以触发的“关闭虚拟键盘”事件:
QApplication::postEvent(lineEdit, new QEvent(QEvent::CloseSoftwareInputPanel));