近日開始将项目移植到cocos2dx 3.0版本号,出现了一些问题,UI方面眼下就发现UITextField控件不能响应退格键或者删除键,在Windows以下调试如此,我開始以为是平台支持不好,后来公布到Android后也是如此。

没办法仅仅好跟踪了一下源代码。Key操作基本的处理是在CCGLView类里面的GLView::onGLFWKeyCallback()。看了一下其它函数的处理,定位问题是没有通知IMEDispatcher。尝试在这个函数里面加入�了几行代码:

if(GLFW_KEY_DELETE == key)
{
IMEDispatcher::sharedDispatcher()->dispatchDeleteBackward();
}

再測试的时候发现已经能够了。只是这样改比較苟且,代码不太优美。并且不知道cocos2dx官方这样设计的目的是什么。最后决定在AppDelegate里面加入�监听然后再处理。详细代码例如以下:

static void keyEventCallback(EventKeyboard::KeyCode code, Event *event)
{
typedef EventKeyboard::KeyCode KeyCode;
switch(code)
{
case KeyCode::KEY_BACKSPACE:
#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32
IMEDispatcher::sharedDispatcher()->dispatchDeleteBackward();
#else
Director::getInstance()->end();
#endif
break;
case KeyCode::KEY_DELETE:
IMEDispatcher::sharedDispatcher()->dispatchDeleteBackward();
break;
}
}
EventListenerKeyboard *listener = EventListenerKeyboard::create();
listener->onKeyReleased = keyEventCallback;
director->getEventDispatcher()->addEventListenerWithFixedPriority(listener, 1);

问题算是攻克了。

关于cocos2dx3.0 UITextField不能使用退格键删除字符的解决方式的更多相关文章

  1. ubuntu下使用vi是方向键变乱码 退格键不能使用的解决方法

    ubuntu下使用vi是方向键变乱码 退格键不能使用的解决方法 转载:http://blog.csdn.net/yao_qinwei/article/details/8761777 在插入模式下,按删 ...

  2. 前端javascript如何阻止按下退格键页面回退 但 不阻止文本框使用退格键删除文本

    这段代码可以: document.onkeydown = function (e) { e.stopPropagation(); // 阻止事件冒泡传递 e.preventDefault(); // ...

  3. Linux使用退格键时出现^H ^?解决方法

    Linux使用退格键时出现^H ^?解决方法 在linux下执行脚本不注意输错内容需要删除时总是出现^H ^H不是H键的意思,是backspace.主要是当你的终端backspace有问题的时候才需要 ...

  4. SecureCRT终端上使用spark-shell时按退格键无反应的解决方法

    问题:用SecureCRT远程连接至Spark集群,启动spark-shell却发现输错命令后却无法用退格键删除. 解决方法: 第一步: 在SecureCRT的菜单栏选择“OPtions(选项)”按钮 ...

  5. [转] linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决,Linux使用退格键时出现^H解决方法

    [From] https://www.zmrbk.com/post-2030.html https://blog.csdn.net/suifengshiyu/article/details/40952 ...

  6. python使用退格键时出现^H解决方法

    Linux 使用退格键时出现^H解决方法 1.临时解决 按ctrl 2.永久解决 基本现象 进入 Python shell,按下 Delete/Backspace 键: Python 3.5.2 (d ...

  7. Linux 使用退格键时出现^H解决方法

    当我们再和脚本交互的时候,在终端上输错了内容,使用退格键,屏幕上会出现乱码,比如 ^H.^H不是H键的意思,是backspace. 主要是当你的终端backspace有问题的时候才需要设置. 解决方法 ...

  8. Ubuntu下使用Vi时方向键变乱码 退格键不能使用的解决方法

    要在Ubuntu下编辑一些文件,这就涉及到了vi这个编辑器了.在Ubuntu下,初始使用vi的时候有点问题,就是在编辑模式下使用方向键的时候,并不会使光标移动,而是在命令行中出现[A [B [C [D ...

  9. Linux下使用Vi是方向键变乱码 退格键不能使用的解决方法

    在Linux下编辑一些文件.这就涉及到了vi这个编辑器了.在Linux下,初始使用vi的时候有点问题.就是在编辑模式下使用方向键的时候,并不会使光标移动,而是在命令行中出现[A [B [C [D之类的 ...

随机推荐

  1. c++ char_traits模板类的实现!!!

    本人写过与此相关的两篇博客,一个是<cstring>头文件的实现,还有一个是<cwchar>的实现.这里的char_traits模板类在此基础上实现. 为了方便.将源码一起封装 ...

  2. mysql 创建函数 error Code: 1227. Access denied;

    mysql> show function status; +------+------------------+----------+------------+----------------- ...

  3. POJ 2112 Optimal Milking【网络流+二分+最短路】

    求使所有牛都可以被挤牛奶的条件下牛走的最长距离. Floyd求出两两节点之间的最短路,然后二分距离. 构图: 将每一个milking machine与源点连接,边权为最大值m,每个cow与汇点连接,边 ...

  4. How to append files to a .tar archive using Apache Commons Compress?(转)

    I created a copy of the tar archive and copied to entire content to it. Then I delete the old tar ar ...

  5. 加速 lucene 的搜索速度 ImproveSearchingSpeed

    * Be sure you really need to speed things up. Many of the ideas here are simple to try, but others w ...

  6. URAL 1056(树形DP)

    1056. Computer Net Time limit: 2.0 second Memory limit: 64 MB Background Computer net is created by ...

  7. OpenCV-Python教程(4、形态学处理)

    提示: 转载请详细注明原作者及出处,谢谢! 本文介绍使用OpenCV-Python进行形态学处理 本文不介绍形态学处理的基本概念,所以读者需要预先对其有一定的了解. 定义结构元素 形态学处理的核心就是 ...

  8. Access Violation at address 00000000.Read of address 00000000 解决办法

    是数组越标或没有初始化某个对象之类的问题,搂住细细检查一下代码, 使用指针前未做检查,而这个指针未初始化. 可能是new后没有delete,这样出现溢出的可能性比较大     检查代码或者跟踪试试 使 ...

  9. 积累的VC编程小技巧之组合框

    1.如何正确的得到ComBox的指针 CComboBox *mComb = (CComboBox*)GetDlgItem(IDC_DuanCB); CComboBox *mComb = (CCombo ...

  10. Android实现位图剪切

    我们不能总是依赖于BitmapFactory 以下告诉大家怎么从Bitmaqp中截取某一部分创建新的Bitmap  系统会有一个默认png图片:icon.png 可是这个图片中最外层会有白色的 比較讨 ...