前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于cocos2dx3.0 UITextField不能使用退格键删除字符的解决方案

关于cocos2dx3.0 UITextField不能使用退格键删除字符的解决方案

作者头像
帘卷西风
发布2018-08-03 16:12:31
6790
发布2018-08-03 16:12:31
举报
文章被收录于专栏:帘卷西风的专栏

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

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

代码语言:javascript
复制
if(GLFW_KEY_DELETE == key)  
{  
    IMEDispatcher::sharedDispatcher()->dispatchDeleteBackward();  
}

       再测试的时候发现已经可以了。不过这样改比较苟且,代码不太优美。而且不知道cocos2dx官方这样设计的目的是什么。最后决定在AppDelegate里面添加监听然后再处理。具体代码如下:

代码语言:javascript
复制
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;
	}
}
代码语言:javascript
复制
EventListenerKeyboard *listener = EventListenerKeyboard::create();
listener->onKeyReleased = keyEventCallback;
director->getEventDispatcher()->addEventListenerWithFixedPriority(listener, 1);

        问题算是解决了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014年04月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档