深入BREW消息处理机制 |
| 作者:东方欲晓 来源:本站整理 发布时间:2008-4-8 1:14:04 |
|
母,数字,符号时没有问题。但是当输入为拼音时,当达到最大输入数时会出现一种情况,就是不能输入进text了,但是拼音dlg继续存在,且随着不断的按键继续有不断的响应(比如候选字不断变化等)。这是由于oem层当输入达到最大值时的处理是,仅仅不往text buffer中存入字符而并没有实现:release掉pinyindlg,回到text 控制下,不响应用户任何输入这些功能。 如何解决这个问题那?当对brew事件处理机制很熟悉的话,问题就迎刃而解了。只需要当输入达最大数时的同时将event处理控制权释放即可,这样下次事件处理将重新由app捕获,并传给itextctl,而在itextctl的handleevent的oem实现中进行判断,当已达最大输入时,不作任何响应。具体如下: ipinyinmanager_handleevent中有对select事件进行处理,主要就是add char到text中,我们在add char这个处理之后,加入对最大输入数是否已到的判断,如果最大数已到,则直接return false 释放event handle的控制权。之后,pinyindlg注册的pinyindlgevent会继续处理这个事件(即select键),在这个eventhandle中release掉pinyindlg,使其不再显示,同时返回true(这是为了让该事件select不再传至app,否则app可能采取保存等操作)。这样下次按键将顺利被传至itextctl_handleevent,在该handleevent的oem实现中,我们加入对输入最大数的判断,如果已达最大数,则不作任何响应,同时返回true(对程序而已,的确是作出了响应:))。 这样就达到了当拼音输入达最大数的同时自动隐去拼音框,之后再按任何键无响应的合理效果。 以上是我一段时间工作后的心得体会,可能有不当之处,大家相互交流。[转载于歪酷博客] 原文:http://nicefuture.yculblog.com/post.715151.html |
| [] [返回上一页] [打 印] |
|
文章评论 |
